Excel 在 3 列中查找值并从第 3 列返回值?

Excel 在 3 列中查找值并从第 3 列返回值?

我正在尝试查找在 3 列中找到的值。在 3 列中找到该值后,我想返回第 3 列的值。我该怎么做?见下文。

Code1 Code2 Code3 80281752 5000973 5000981 80281753 5000974 5000974 80281896 5000993 5000995 80281897 5000976 5000976 5000977 5000977 5000977

例如,我想查找 80281896(在第一列中找到)并让它返回 5000995;或者查找 5000973(在第二列中找到)并让它返回 5000981;或者查找 5000980(在第 3 列中找到)并让它返回第 3 列。查找需要搜索所有 3 列并返回第 3 列中的值。我被难住了!

谢谢。

答案1

尝试此解决方案。在此示例中,示例数据位于单元格 B3:D7 中。要使此公式起作用,您应该在数据前留出一个单元格,该单元格通常是标题行。

在 E3 中输入查找值。

在 F3 中输入以下公式。

=IFERROR(INDEX(D3:D7,SUMPRODUCT((B3:D7=E3)*(ROW(B3:B7)-ROW($B$2)))/SUMPRODUCT(((B3:D7=E3)*1))),"Not Found")

此公式使用 SUMPRODUCT 来获取相对 ROW 号,并在第三列的 INDEX 中检索第三列的值。

在此处输入图片描述

答案2

将查找值放入D1以及E1进入:

=INDEX(C1:C6,IFERROR(IFERROR(MATCH(D1,C1:C6,0),MATCH(D1,B1:B6,0)),MATCH(D1,A1:A6,0)))

首先尝试匹配列C;如果失败,尝试列;如果失败,请尝试列A

在此处输入图片描述

编辑#1:

这是一个更通用的工具。(对于包含很多列的表,嵌套会有问题)

假设我们在工作表的某个地方有一个任意大小的二维表。我们想要查找一个值并返回该表最后一列中的值。在标准模块中输入以下用户定义函数:

Public Function LastKolumn(v As Variant, rng As Range) As Variant
    Dim nRow As Long, nKolumn As Long

    nKolumn = rng.Columns.Count + rng.Column - 1
    nRow = rng.Find(what:=v, after:=rng(1)).Row

    LastKolumn = rng(nRow, nKolumn)
End Function

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件另存为.xlsm而不是.xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=LastKolumn(A1,B1:Z100)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

相关内容