我一直试图寻找答案,所以如果它已经得到回答,那么我一定不能使用正确的术语。
基本上我有三列,大约700行。我需要做的是:
+---------+---------+-----+
| A | B | C |
+---------+---------+-----+
| chicken | beef | 112 |
| pork | chicken | 541 |
| beef | pork | 312 |
| salami | | |
+---------+---------+-----+
我需要一个公式来搜索单元格A中的当前单元格以查找整个B列中的匹配项。找到匹配后,需要在C处返回匹配单元格行号中的值。
例如,我使用公式=MATCH(A1, B$1:B$4,0)
,它将返回匹配值的当前位置。因此,具有公式的单元格将返回数字2
。现在我需要弄清楚我是如何在C2获得价值的?
所以在一些伪代码中:
If A1 matches B2 get value at C2
If A2 matches A2 get value at C3
我希望有这样的功能:
=IF(MATCH(A1,B$1:B$4,0),C*numberReturnedHere*,"No Matches Found")
希望我提供了足够的信息并明确了我想做的事情。感谢
编辑:
期望的结果
+---------+---------+-----+------------------+
| A | B | C | D |
+---------+---------+-----+------------------+
| chicken | beef | 112 | 541 |
| pork | chicken | 541 | 312 |
| beef | pork | 312 | 112 |
| salami | | | No Matches Found |
+---------+---------+-----+------------------+
答案 0 :(得分:1)
答案 1 :(得分:1)
这是INDEX功能。索引通过获取单个列,单个范围或2D数据表来工作,并返回您指定的行号和列号。因为您只想从列C返回数据,所以我们可以忽略分配列。使用MATCH函数(它是INDEX的理想合作伙伴),公式如下所示:
=INDEX(C:C,MATCH(B:B,A1,0))
或者,您可以使用单个VLOOKUP函数执行此操作,该函数查看数据表的最左侧列,查找匹配值,并返回该行中指定列数的值。看起来像是:
=VLOOKUP(A1,B:C,2,0)
请注意,虽然这有点简单,但定期使用INDEX + MATCH会很有用,因为它更通用。
正如@Gary指出的那样,如果找不到匹配项,您可以用IFERROR包装任一公式,以获得所需的错误消息。