在Excel中匹配文本

时间:2019-06-26 17:43:45

标签: arrays excel excel-formula

我正在Excel上创建一个标签系统,它将产品(例如,橙子)与产品列进行比较(例如,列出水果和其他浆果),并根据产品所在的列用水果或浆果进行标签内。

VLookup和HLookup有问题,因为必须重新布置参考表,这是有问题的。如果没有重新排列,它将不起作用,因为我需要的“类型”在HLookup的第一行中,而且要浏览两列数据。 2列数据还会混淆MATCH函数,因为它只能浏览1列。我真的不想结束很多IF语句,这就是我在这里提出问题的原因。

有些代码执行的功能与我所需的功能相似,但是MMULT函数对我的引用表不起作用,因为有很多行数据。

代码创建事物的矩阵类型,并找到事物所在的行而不是列。

=INDEX(TYPE,MATCH(1,MMULT(--(SUB_TYPE=C2),TRANSPOSE(COLUMN(SUB_TYPE)^0)),0))

1 个答案:

答案 0 :(得分:1)

也许尝试这样的事情:

enter image description here

enter image description here

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