2014-12-03 56 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