Excel - 根据文本过滤器创建子列表

时间:2014-12-03 04:50:54

标签: excel search if-statement excel-formula

我正在尝试实现类似于本文中解释的内容:

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)
        )
    ),
    ""
)

我在这个公式中缺少什么?

1 个答案:

答案 0 :(得分:0)

恕我直言的公式没有错。它对我有用,但当我尝试使用所选范围原地更改原始配方时,我确实遇到了问题。如果您从工作表中的新区域开始,或者只选择原始范围中的顶部单元格,然后在更改后将其拉下来,那就没问题了。选择了范围后,它没有将最终的B2更改为B3等,因为我将其拉下来,所以只是重复了第一行的数字。

BTW在公式的修改部分中不需要“> = 1”,因为任何匹配都会给出结果> 0,相当于“true”

IFERROR(SEARCH("a",$D$2:$D$11),0)

另请参阅在更改数组公式之前将数组公式更改为普通公式的建议

Changing array formulae