2014-12-03 38 views
1

我想实现类似于本文中介绍的一些子表:Excel中 - 让基于文本过滤

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列)的搜索功能替换该行。以下内容适用于单行(如果单元格中不包含“a”,则返回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

你怎么在B列有,数值或文本字符串之前?并在C栏? plz – AHC 2014-12-03 05:47:59

+0

@AHC更新的问题包括列数据类型。 – GrossT 2014-12-03 06:20:46

+0

为什么您将搜索参数更改为$ D2?你可以给你的数据截图吗? – AHC 2014-12-03 06:33:10

回答

0

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

BTW不需要“> = 1”,在式I的改性部分,因为任何匹配将给出一个结果> 0这相当于“真”

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

参见建议用于改变该数组公式普通的人改变他们

Changing array formulae