Excel-使用公式以起始字符串來篩選(OFFSET,ROW,LEN)

在 Excel 中如果要使用公式以起始字符串來篩選列表中的項目,該如何處理?


參考下圖,要以起始字符串(本例:A135790)在一個號碼的列表中篩選。

Excel-使用公式以起始字符串來篩選(OFFSET,ROW,LEN)

【手動篩選】

如果你使用篩選工具,就可以使用「文字篩選」下的「開始於」功能來篩選。

Excel-使用公式以起始字符串來篩選(OFFSET,ROW,LEN)

輸入開始的字符串:(本例為A135790)

Excel-使用公式以起始字符串來篩選(OFFSET,ROW,LEN)

隨之得到篩選結果:

Excel-使用公式以起始字符串來篩選(OFFSET,ROW,LEN)

【公式設計與解析】

如何以公式來完成 ?

先選取A1:A35,按 Ctrl+Shift+F3 鍵,勾選「頂端列」,定義名稱:號碼。

單元格D2:{=IFERROR(OFFSET($A$1,SMALL(IF(LEFT(號碼,LEN($C$2))=$C$2,ROW(號碼),""),ROW(1:1))-1,0),"")}

複製單元格D2,貼至單元格D2:D14。

這是數組公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。

Excel-使用公式以起始字符串來篩選(OFFSET,ROW,LEN)

(1) IF(LEFT(號碼,LEN($C$2))=$C$2,ROW(號碼),"")

先以LEN 函數計算單元格C2的文字長度,然後在數組公式中利用 LEFT 函數判斷所有號碼列表由左邊取和單元格C2相同的的文字長度,如果和單元格C2相同者傳回其列號(利用 ROW 函數),否則傳回空字符串。

(2) SMALL(第(1)式,ROW(1:1))

利用 SMALL 函數於第(1)式的傳回值由小至大取出列號。公式向下複製時,ROW(1:1)=1→ROW(2:2)=2→ROW(3:3)=3→…。

(3) OFFSET($A$1,第(2)式-1,0)

將第(2)式傳回的列號代入 OFFSET 函數取得對應的單元格內容。

(4) IFERROR(第(3)式,"")

公式可能傳回錯誤訊息,藉由 IFERROR 函數將錯誤訊息置換為空字符串。


分享到:


相關文章: