我正在尝试实现类似于本文中解释的内容:
http://exceltactics.com/make-filtered-list-sub-arrays-excel-using-small/
对于此示例,列B具有文本,列c具有整数值,列d具有文本
以下公式适用于过滤我数据C列中> = 1的值:
=IFERROR(
INDEX(
B$2:B$11,
SMALL(
IF(
$C$2:$C$11>=1,
ROW(B$2:B$11)-ROW(B$2)+1
),
ROWS(B$2:B2)
)
),
""
)
我想用搜索功能替换该行,该搜索功能基于单元格的文本内容进行过滤(来自D列)。以下工作在单行上(如果&#34,则返回0;单元格中不包含"否则返回大于0的值)。
=IFERROR(SEARCH("a",$D2),0)
然而,将它与第一个功能结合起来并不起作用:
=IFERROR(
INDEX(
B$2:B$11,
SMALL(
IF(
IFERROR(SEARCH("a",$D$2:$D$11),0)>=1,
ROW(B$2:B$11)-ROW(B$2)+1
),
ROWS(B$2:B2)
)
),
""
)
我在这个公式中缺少什么?
答案 0 :(得分:0)
恕我直言的公式没有错。它对我有用,但当我尝试使用所选范围原地更改原始配方时,我确实遇到了问题。如果您从工作表中的新区域开始,或者只选择原始范围中的顶部单元格,然后在更改后将其拉下来,那就没问题了。选择了范围后,它没有将最终的B2更改为B3等,因为我将其拉下来,所以只是重复了第一行的数字。
BTW在公式的修改部分中不需要“> = 1”,因为任何匹配都会给出结果> 0,相当于“true”
IFERROR(SEARCH("a",$D$2:$D$11),0)
另请参阅在更改数组公式之前将数组公式更改为普通公式的建议