2018年2月19日 星期一

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 函數將錯誤訊息置換為空字串。

沒有留言:

張貼留言

檢視其他文章

好康東東