首页 > 解决方案 > 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))

标签: arraysexcelexcel-formula

解决方案


也许尝试这样的事情:

在此处输入图像描述

在此处输入图像描述

INDEXMATCH组合仍然可以为您解决问题。像这样:

=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"))

推荐阅读