挑战:
参数:
INDIRECT
,因为它不可扩展,并且如果移动或插入数据会损坏注意:
INDEX
/ MATCH
函数组合不适用于部分字符串匹配演示图片:
答案 0 :(得分:1)
在单元格A2
中(请参见问题的所附图片),我放置了以下公式:
=IF($E$2="","",IFERROR(INDEX(A$7:A$28,SMALL(IF(ISNUMBER(SEARCH($E$2,A$7:A$28)),ROW(A$7:A$28)-ROW(A$7)+1),ROWS(A$2:A2))),""))
,然后按 CTRL + SHIFT + ENTER ,以公式形式输入数组公式。最后,将此公式向下拖动到A5
,然后将A2:A5
拖动到C
列。
如果某人想要水平而不是垂直返回结果(如我所做的那样),则只需将公式的ROWS(A$2:A2)
部分更改为COLUMNS(A$2:A2)
并向侧面拖动适当数量的列
此解决方案的原始想法来自barry houdini,是对this question的回答。
此公式的工作方式为:
E2
)是否为空白,如果为空白,则结果单元格也保持空白。在此示例中,它不是空白,并且开始计算。SEARCH
函数搜索我们的搜索词(在此示例中为“ ke”)。它返回一个错误消息数组和(如果有任何匹配项)它们在网格中的位置编号。ISNUMBER
函数,根据SEARCH
在上一步中返回的内容,将数组中的值转换为“ FALSE”和“ TRUE”。在我们的示例中,此单元格将在数组的第三位置返回“ TRUE”。IF
函数具有“ TRUE”响应,因此我们现在将评估该数组中该特定点的返回值。 ROW(A$7:A$28)-ROW(A$7)+1
部分根据数组的起始位置将数组的所有绝对行值转换为相对值。SMALL
函数中,我们现在有了一个数组,其中包含“ FALSE”和匹配项的任何相对位置(在此示例中为“ 3”)。A2
)的位置,所以它将返回数字“ 1”。SMALL
函数求值,并返回第一个最小的结果(“ FALSE”被消除,返回的数字是步骤5中的3)。INDEX
函数现在求值,并返回数组A$7:A$28
的第三位置的单元格,即“米老鼠”。