Excel,根据整个工作表中find的文本返回行和列值

说我有一个如下所示的Excel表格:

在这里输入图像描述

我需要find值为“E”的任何单元格,并从该行的第一列和该列的第一行返回值。

例如,在这种情况下,预期的产出将是February 3

我已经可以使用HLOOKUPVLOOKUP做类似的事情,但是我总是在单行或者单列中search文本,在这里我需要search整个表格中的值。

任何方式,我可以做到这一点?

请注意,我无法控制电子表格的格式,是的,我完全同意这不是存储和处理这些数据的好格式。

假设你的例子

在这里输入图像说明

Sheet1 ,然后公式:

 {=INDEX(Sheet1!$A$1:$A$1000,INT(SMALL(IF(Sheet1!$B$2:$K$10="E",ROW(Sheet1!$B$2:$K$10)+COLUMN(Sheet1!$B$2:$K$10)/1000),ROW($A1))))} 

 {=INDEX(Sheet1!$A$1:$ALK$1,,RIGHT(TEXT(SMALL(IF(Sheet1!$B$2:$K$10="E",ROW(Sheet1!$B$2:$K$10)+COLUMN(Sheet1!$B$2:$K$10)/1000),ROW($A1)),"0.000"),3))} 

都向下复制将得到

在这里输入图像说明

在另一张纸上。

第一个公式在这里是B2C2

这两个公式都是数组公式。 把它放入单元格中,不要input大括号。 然后按[Ctrl] + [Shift] + [Enter]确认。 现在应该出现大括号。

公式中的search范围Sheet1!$B$2:$K$10可以扩展到Sheet1!$B$2:$ALK$999 。 但是范围越大,性能越差。

方法是获取search范围中出现“E”的数字列表(行号+列号/ 1000)。 即行号为整数部分,列号为小数部分,其中1为0.001,2为0.002,…,999为0.999。 然后使用Small从最小到最大的数字。 然后通过获取整数部分得到真正的行数。 并从最后3位获得真实的列号。

要使用计算的十进制数的最后三位数作为列数,我们必须确保在所有情况下都有三位数的小数位数。 所以我们必须使用格式0.000 。 为此我们可以使用TEXT函数。