arrays - Excel 中的匹配文本
问题描述
我正在 Excel 上创建一个标签系统,它获取产品(例如橙子)并将其与产品列(例如列出水果和其他浆果)进行比较,并根据它所在的列用水果或浆果标记它。
VLookup 和 HLookup 是有问题的,因为必须重新排列引用表,这是有问题的。如果没有重新排列,它将无法工作,因为我需要的“类型”位于 HLookup 的第一行,而且有 2 列数据需要查看。2 列数据也会弄乱 MATCH 函数,因为它只能查看 1 列。我真的不想结束很多 IF 语句,这是我在这里提出问题的原因。
有一些代码的执行类似于我需要的代码,但 MMULT 函数不适用于我的参考表,因为有太多的数据行。
该代码创建了一个矩阵类型的事物并找到它所在的行而不是列。
=INDEX(TYPE,MATCH(1,MMULT(--(SUB_TYPE=C2),TRANSPOSE(COLUMN(SUB_TYPE)^0)),0))
解决方案
也许尝试这样的事情:
INDEX
MATCH
组合仍然可以为您解决问题。像这样:
=INDEX(A1:B1,,SUMPRODUCT((A1:B4=D2)*COLUMN(A1:B4)))
您甚至可以通过以下方式使它变得花哨CHOOSE
:
=CHOOSE(SUMPRODUCT((A1:B4=D2)*COLUMN(A1:B4)),"Fruits","Berries")
可能更好的是:
=IF(COUNTIF(A:A,D2)>0,"Fruits","Berries")
如果您确定任一列中有匹配项,则可以。如果你不确定,并且想知道是否真的有匹配,你可以堆叠另一个IF
:
=IF(COUNTIF(A:A,D2)>0,"Fruits",IF(COUNTIF(B:B,D2)>0,"Berries","No match found"))
建议的编辑会更快:
=IF(ISNUMBER(MATCH(D2,A:A,0)),"Fruits",IF(ISNUMBER(MATCH(D2,B:B,0)),"Berries","No match found"))