Arrays Excel中的文本匹配

Arrays Excel中的文本匹配,arrays,excel,excel-formula,Arrays,Excel,Excel Formula,我正在Excel上创建一个标签系统,它将产品(例如橙子)与产品列(例如,一个列出水果和其他浆果)进行比较,并根据其所在列将其标记为水果或浆果 VLookup和HLookup是有问题的,因为引用表必须重新排列,这是有问题的。如果不重新排列,它将无法工作,因为我需要的类型位于HLookup的第一行,而且还有两列数据需要查看。这两列数据也会弄乱匹配函数,因为它只能查看一列。我真的不想结束很多IF语句,这就是我在这里提问的原因 有一些代码的性能与我需要的类似,但MMULT函数无法用于我的引用表,因为有太

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

VLookup和HLookup是有问题的,因为引用表必须重新排列,这是有问题的。如果不重新排列,它将无法工作,因为我需要的类型位于HLookup的第一行,而且还有两列数据需要查看。这两列数据也会弄乱匹配函数,因为它只能查看一列。我真的不想结束很多IF语句,这就是我在这里提问的原因

有一些代码的性能与我需要的类似,但MMULT函数无法用于我的引用表,因为有太多的数据行

代码创建一个矩阵类型的东西,并找到它所在的行而不是列


=INDEXTYPE,MATCH1,MMULT-SUB_TYPE=C2,TRANSPOSECOLUMNSUB_TYPE^0,0

索引和匹配组合仍然可以为你做的把戏。像这样:

=INDEX(A1:B1,,SUMPRODUCT((A1:B4=D2)*COLUMN(A1:B4)))
您甚至可以使用CHOOSE(选择)来制作精美的:

最好是:

=IF(COUNTIF(A:A,D2)>0,"Fruits","Berries")
如果您确定任一列中都有匹配项,则可以。如果您不确定,并且想知道是否确实存在匹配项,您可以堆叠另一个匹配项,如果:

建议的编辑速度会更快:

=IF(ISNUMBER(MATCH(D2,A:A,0)),"Fruits",IF(ISNUMBER(MATCH(D2,B:B,0)),"Berries","No match found"))

我认为最后一个是最好的,我只会改为使用ISNUMBERMATCH,因为匹配更快,如果搜索集很大,它会使计算陷入困境,在大约10000个公式之后,它会停止一起工作。
=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"))