![Excel 在 3 列中查找值并从第 3 列返回值?](https://linux22.com/image/1551530/Excel%20%E5%9C%A8%203%20%E5%88%97%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%80%BC%E5%B9%B6%E4%BB%8E%E7%AC%AC%203%20%E5%88%97%E8%BF%94%E5%9B%9E%E5%80%BC%EF%BC%9F.png)
我正在尝试查找在 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
答案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) 非常容易安装和使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件另存为.xlsm而不是.xlsx
要删除 UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 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
必须启用宏才能使其工作!