使用索引和匹配来纵向和横向进行查找
我在一张纸上有一列数据,每个单元格包含一个可以在另一张纸上的数组中find的值。 我试图find一个函数,如果它从工作表1的列中find工作表2中的数组中的值,则返回最左边一列中的值。
这是一个数据的例子:
表1
| AH2377507 | | 2188622 | | EA404278 | | AH885430 |
表2
aaa | 1874379 | AH2377507 | EA2377507 | PS2377507 | 67004276 | 949529 | AH2065634 bbb | 1938614 | 2186486 | 2188622 | 2188708 ccc | 919973 | AH404278 | EA404278 | PS404278 | 2188746 ddd | 960929 | AH885430 | EA885430 | PS885430
所以当在表2中find'2188622'时,它返回'bbb'。
同样,第2页中的数据列数也因行而异,因此数组中有空单元格。
我已经尝试在hlookup中嵌套vlookp,反之亦然,并且在索引/匹配中嵌套hlookup,但是这些想法都没有奏效。
你需要的不仅仅是一个INDEX/MATCH
=INDEX(Sheet2!$A$1:$A$4,SUMPRODUCT((Sheet2!$B$1:$F$4=Sheet1!$A1)*ROW(Sheet2!$A$1:$A$4)))
假设Sheet1的数据在A1:A4
, Sheet2的数据在A1:F4
。
注意 ROW(Sheet2!$A$1:$A$4)
最后与您的数据无关。 范围必须始终从A1
开始,如果在Sheet2中有10
logging,则它必须以A10
结束。
更多信息 …
由于您的查找值来自二维数组,而不是单个行/列,因此不能使用MATCH
。 我们需要模拟一个匹配,所以这是SUMPRODUCT
进来的地方。如果你在A1:B2
有以下数组
aa ab
我们可以执行逻辑操作A1:B2="b"
。 这会创build一个这样的数组
FALSE FALSE FALSE TRUE
记住TRUE=1
和FALSE=0
如果我们乘以ROW(A1:A2)
那么这个数组就变成了
0*1 0*1 = 0 0 0*2 1*2 = 0 2
所以你可以看到这个数组的SUM
是2
,这正是我们正在寻找的位置(这是MATCH
会返回的)
所以我们把这一切都包装在这样的SUMPRODUCT
=SUMPRODUCT((A1:B2="b")*ROW(A1:A2))
你已经得到了你的答案