在表格数组excel中查找文本

下面是一个大型表格(2017年的35个例子)

我想要一个公式,它将查找一个案例引用,例如P0093,并返回它find的第一个ID(列A)。

例如,给定“P0094”,该公式将导致“1”。

我期望答案是与数组公式有关,这对我来说是一个盲点。

提前致谢。

ID Case 1 Case 2 Case 3 Case 4 Case 5 1 P0001 P0092 P0093 P0094 2 P0016 P0150 P0419 P0420 3 P0018 P0189 P0421 P0422 4 P0004 P0095 P0096 P0097 5 P0005 P0104 P0105 6 P0021 P0068 P0069 7 P0007 P0098 P0099 P0100 8 P0008 P0101 P0102 P0103 9 P0009 P0062 P0233 P0234 

试试这个:(为了可读性而添加换行符)

 = IFERROR(INDEX(A:A,MATCH(1,(MMULT((A1:E10="P0094")+0, TRANSPOSE((COLUMN(A1:E10)>0)+0))>0)+0,0)),"no match") 

只要在上面的公式中将E10两个实例更改为实际的数据表。 (假设2017年ID和35例,我可能会改变E10 AJ2018但我不知道肯定。)

还要注意这是一个数组公式,所以你必须按下键盘上的Ctrl + Shift + Enter ,而不是只按Enter键

非CSE替代品

请参阅图片了解单元格参考布局。 在I13中使用下面的公式:

 =IFERROR(INDEX($A$1:$A$10,AGGREGATE(15,6,ROW($B$2:$E$10)/($B$2:$E$10=$I$12),1)),"not found") 

聚合执行数组类似的操作,而不是实际上是一个数组。

这个概念是find你正在查找的值是真的行,而其他所有的行都是错误的。 它首先使分母返回TRUE或False。 由于TRUE或FALSE通过math运算发送,Excel会将TRUE转换为1,将FALSE转换为0.由于所有除以0的值都将成为错误,因此只会保留分母为真的行。 其原因是聚合函数中的6,它告诉聚合忽略所有的错误。 总计15个告诉聚合从最小到最大sorting结果。 最后,1)告诉聚合返回列表中的第一个值。 一旦知道,INDEX接pipe。 索引返回从集合传递的范围A1:A10中的行条目。 如果范围是A2:A10,那么我将不得不减去行(A2)-1以获得列表中的起始条目号而不是行号。

重要的是要注意。 尽pipe这不是一个数组,但AGGREGATE执行数组类似的计算。 因为在AGGREGATE函数中应避免使用这样的全列参考,以避免空白单元上的浪费计算。

POC