close

2238

Excel 求不連續資料顯示方法

錦子老師您好:

想從資料中判斷「總計」>0時,會下方顯示相對應資料的方法,看過OFFSET函數的不連續方法,但都失敗,有方法嗎?請教教我,謝謝!

由於會使用到IFERROROFFSETSMALLSUMPRODUCTROWCOUNTIF函數,故對許多人來說會比較麻煩。

1、點取B15儲存格輸入公式:

=IFERROR(OFFSET($B$1,SUMPRODUCT(SMALL(($O$2:$O$11>0)*(ROW($O$2:$O$11)),COUNTIF($O$2:$O$11,0)+ROW()-14))-1,0,1,1),"")

也可以將公式更改為SNARE網友提供的陣列公式(按CTRL+SHIFT+ENTER鍵完成輸入):

=IFERROR(INDEX(OFFSET($B$2:$B$11,,(COLUMN()-2)*13),SMALL(IF($O$2:$O$11>0,ROW($O$2:$O$11)-ROW($O$2)+1),ROW()-14)),"")

再將公式複製到B16:B24儲存格。

【公式解說】

($O$2:$O$11>0) 傳回O2:O11儲存格>0的儲存格有那些(TRUEFALSETRUEFALSEFALSETRUETRUETRUEFALSETRUE)

(Row($O$2:$O$11)) 傳回O2:O11儲存格的列號(2,3,4,5,6,7,8,9,10,11)

Countif($O$2:$O$11,0) 統計O2:O11儲存格中內容為0的儲存格數目。

Small(($O$2:$O$11>0)*(Row($O$2:$O$11)),Countif($O$2:$O$11,0)+Row()-14) 抓取($O$2: $O$11>0)(Row($O$2:$O$11))的數值,第N(Countif($O$2:$O$11,0)+列號-14)小的值。

這是由於0值一樣會在統計中,故要先將內容為0的儲存格數量統計出來後依列順序加值,由於再第15列開始故要減14變成為1,依序遞增。

Sumproduct(Small(($O$2:$O$11>0)* (Row($O$2:$O$11)),Countif($O$2:$O$11,0)+Row()-14))-1 將統計出的數值減1,這是因為要從第一列開始移動,故必須將移動值減1再會正確對應到該儲存格。

Offset($B$1,Sumproduct(Small(($O$2:$O$11>0)*(Row($O$2:$O$11)),Countif($O$2:$O$11,0)+Row()-14))-1,0,1,1) B1儲存格開始移動N(Sumproduct(Small(($O$2:$O$11>0)*(Row($O$2: $O$11)),Countif($O$2:$O$11,0)+Row()-14))-1)列,0欄,框選11欄。

C15的公式與B15的公式差別只是在OFFSET的第一個參數,C15O1儲存格來移動。

Iferror(Offset($B$1,Sumproduct(Small(($O$2:$O$11>0)*(Row($O$2:$O$11)),Countif($O$2:$O$11,0)+Row()-14))-1,0,1,1),"") 如果出現錯誤訊息則不填入資料。

 


arrow
arrow
    創作者介紹

    錦子老師 發表在 痞客邦 留言(0) 人氣()