使用 Excel,我有两个单独的工作簿,每个工作簿中都有一个工作表,其中一列用于存储姓氏,另一列用于存储名字,顺序相同(先姓后名)。
我希望第二个工作簿中的每一行姓名都查看第一个工作簿中相同的姓氏+名字组合,并在该行的单独列中返回一个值。
[ExperienceReport.xlsx]临时报告:
Columns: A - B - C
Last - First - Desired Return
Last - First - Desired Return
当前工作表:
Columns: H - I - X
Last - First - Find and return Desired Return for this name
Last - First - Find and return Desired Return for this name
到目前为止,我已经想到了以下内容,但是每一行都出现#VALUE 错误:
=INDEX('[ExperienceReport.xlsx]Ad Hoc Report'!$A$2:$J$150,MATCH($H5&" "&$I5,'[ExperienceReport.xlsx]Ad Hoc Report'!$A$2:$A$150&'[ExperienceReport.xlsx]Ad Hoc Report'!$B$2:$B$150,0),3)
从逻辑上讲,我找不到问题,因为它似乎是这样的:INDEX(在第一个工作簿/工作表的指定数组中查找 MATCH 的行(此工作表上的“最后一个第一个”组合与第一个工作簿/工作表的 A 和 B 列中的“最后一个第一个”组合匹配)并给我该行第 3 列的值。
我知道我倾向于用困难的方式做事,但如果有人能发现我的方式中有明显的错误,请帮忙!
答案1
简单的方法是在两张表上都创建一个包含名字和姓氏的辅助列,然后使用常规的VLOOKUP()
。但也有一种“困难”的方法。
INDEX()
并且MATCH()
只能返回单个单元格或项目。您需要做的是将各列组合到公式中的单个数组中,如下所示:
=INDEX('[ExperienceReport.xlsx]Ad Hoc Report'!$C$2:$C$150,MATCH(H2&" "&I2,'[ExperienceReport.xlsx]Ad Hoc Report'!$A$2:$A$150&" "&'[ExperienceReport.xlsx]Ad Hoc Report'!$B$2:$B$150,0))
或者更一般地:
=INDEX([Return range],MATCH(arg1&arg2...,[arg1 range]&[arg2 range]...,0))
这是一个数组公式,必须用 ctrl+shift+enter 来确认。