Excel:在一行中search文本string,返回相邻列单元格的值(列会频繁变化)

我试图使用VLOOKUPHLOOKUPLOOKUPINDEXMATCH但迄今还没有能够解决这个问题。 我想填充列A,并在每行中可能findSTRING左边的值。 感兴趣的列经常不同。

如果G1 = STRING,则返回F1;如果G2 = STRING,则返回F2;如果F3 = STRING,则返回E3;如果E4 = STRING,则返回D4

图片

我设法解决它:

= IFERROR(INDEX($ S2:$ BJ2,MATCH(“STRING”,$ S2:$ BJ2,0)-1),“”)

现在,如果我想提取第二,第三和第四个值(如果它恰好不止一个匹配),那么对于“STRING”来说,哪个变化是必须进行的?

我将假设您的数据在E1到H100之间 – 根据需要进行调整。

首先我们需要排 –

 SUMPRODUCT((E1:H100=A1)*ROW(E1:H100)) 

然后我们使用相同的技巧来获得列

 SUMPRODUCT((E1:H100=A1)*COLUMN(E1:H100)) 

这给了我们文字的行列
现在我们用它来查找下一列的文字
由于行和列从单元格0,0偏移,而A1是1,1,我们需要从行中减去1,然后从列中减去2,使它成为1单元格
这给我们留下了以下的公式:

 =OFFSET(A1,SUMPRODUCT((E1:H100=A1)*ROW(E1:H100))-1,SUMPRODUCT((E1:H100=A1)*COLUMN(E1:H100))-2) 

如果您拖动公式来填充多个单元格,请不要忘记定位点