假设我有一张excel表,如下所示:
我需要找到任何值为" E"并返回该行第一列和该列第一行的值。
例如,在这种情况下,预期输出将为February 3
。
我以前可以使用HLOOKUP
和VLOOKUP
执行类似的操作,但我总是在单行或列中搜索文本,而在这里,我需要在整个表中搜索值。
我能做到这一点吗?
请注意,我无法控制电子表格的格式,是的,我完全同意这不是存储和使用此数据的良好格式。
答案 0 :(得分:3)
假设您的示例
在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))}
向下复制都会得到
在另一张表中。
首先公式在B2
和C2
。
两个公式都是数组公式。将其放入单元格而不键入大括号。然后按[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
函数。