我正在Excel上创建一个标签系统,它将产品(例如,橙子)与产品列进行比较(例如,列出水果和其他浆果),并根据产品所在的列用水果或浆果进行标签内。
VLookup和HLookup有问题,因为必须重新布置参考表,这是有问题的。如果没有重新排列,它将不起作用,因为我需要的“类型”在HLookup的第一行中,而且要浏览两列数据。 2列数据还会混淆MATCH函数,因为它只能浏览1列。我真的不想结束很多IF语句,这就是我在这里提出问题的原因。
有些代码执行的功能与我所需的功能相似,但是MMULT函数对我的引用表不起作用,因为有很多行数据。
代码创建事物的矩阵类型,并找到事物所在的行而不是列。
=INDEX(TYPE,MATCH(1,MMULT(--(SUB_TYPE=C2),TRANSPOSE(COLUMN(SUB_TYPE)^0)),0))
答案 0 :(得分:1)
也许尝试这样的事情:
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"))