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

时间:2016-06-18 04:17:55

标签: excel excel-formula

假设我有一张excel表,如下所示:

enter image description here

我需要找到任何值为" E"并返回该行第一列和该列第一行的值。

例如,在这种情况下,预期输出将为February 3

我以前可以使用HLOOKUPVLOOKUP执行类似的操作,但我总是在单行或列中搜索文本,而在这里,我需要在整个表中搜索值。

我能做到这一点吗?

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

1 个答案:

答案 0 :(得分:3)

假设您的示例

enter image description here

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))}

向下复制都会得到

enter image description here

在另一张表中。

首先公式在B2C2

两个公式都是数组公式。将其放入单元格而不键入大括号。然后按[Ctrl] + [Shift] + [Enter]确认。现在应该出现大括号。

公式中的搜索范围Sheet1!$B$2:$K$10可以延长到Sheet1!$B$2:$ALK$999。但是范围越大,性能就越差。

方法是获取一个数字列表(行号+列号/ 1000),其中“E”出现在搜索范围内。这是行号作为整数部分,列号作为小数部分,其中1将是0.001,2将是0.002,...,999将是0.999。然后使用Small将这些数字从最小到最大。然后通过获取整数部分来获取实际行号。并从最后3位数字中获取实际列号。

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