回答網友提問:如何在 Excel 中,由原始清單中挑出符合指定內容的清單?
如下圖,如何由原始清單中(如下圖左),挑出符合指定內容的清單(如下圖左)?
【公式設計與解析】
如果不想大費周章的寫公式,篩選工具是你很好的選擇,而且很容易即可完成。本篇是要以撰寫公式來完成這個工作。
儲存格F4:{=IFERROR(OFFSET($D$1,SMALL(IF($B$2:$B$16=$F$2,
ROW($B$2:$B$16),""),ROW(1:1))-1,0),"")}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。
複製儲存格F4,貼至儲存格F4:F16。
(1) IF($B$2:$B$16=$F$2,ROW($B$2:$B$16),"")
在陣列公式中判斷儲存格F2的內容是否和儲存格B2:B16中的每一個儲存格的內容相符,若是,則傳回該儲存格的列號;否則傳回空字串。在陣列公式中,ROW($B$2:$B$16)={2,3,4, ... , 14,15,16}。
(2) SMALL(第(1)式,ROW(1:1))
利用 SMALL 函數找出第(1)式傳回的列號之最小值。其中,ROW(1:1)向下複製時,ROW(1:1)=1→ROW(2:2)=2→ROW(3:3)=3→....。可以分別取出第 1,2,3,… 較小值。
(3) OFFSET($D$1,第(2)式-1,0)
將第(2)式依序取出的列號,置入 OFFSET 函數中,得到對應的儲存格內容。
(4) IFERROR(第(3)式,"")
因為第(3)式當公式向下複製時,有可能傳回錯誤訊,所以利用 IFERROR 函數將錯誤訊息以空字串顯示。
所以,當儲存格F2改變時,可以顯示對應的清單。
【延伸閱讀:FILTER函數篩選應用】
Excel-2021版新增函數進行篩選、查詢、排序之綜合練習

*****
*****
請問為什麼在公式中要用ROW(1:1)取代1,而不直接使用數字就好呢?有什麼好處嗎?
因為ROW(1:1)向下複製時,ROW(1:1)=1→ROW(2:2)=2→ROW(3:3)=3→....,可以容易取得 1,2,3,… 。 因為放在公式中,相當於使用變數,而非定數。
感謝萬分,從這裡學到很多,今天也成功地第一次使用陣列公式,真是太棒了!
謝謝你光臨我的教學部落格。
你好我搜尋的資料是恆的,我把公式改 一.IF(OR($C$3:$J$3=$O$8,$C$3:$J$3=$O$9),COLUMN($C$3:$J$3),"") 二.SMALL(IF(OR($C$3:$J$3=$O$8,$C$3:$J$3=$O$9),COLUMN($C$3:$J$3),""),COLUMN(A:A)) 三.OFFSET($C$2,0,SMALL(IF(OR($C$3:$J$3=$O$8,$C$3:$J$3=$O$9),COLUMN($C$3:$J$3),""),COLUMN(A:A))-3) 四.=IFERROR(OFFSET($C$2,0,SMALL(IF(OR($C$3:$J$3=$O$8,$C$3:$J$3=$O$9),COLUMN($C$3:$J$3),""),COLUMN(A:A))-3),"") 可以協助我完成嗎? 檔案如下:https://drive.google.com/file/d/1vnwwKkO4WS0Tl0VqdVQBVeSZmQSd57HR/view?usp=sharing
後來發現原因了,矩陣公式使用if or會出現問題,改成ifs就可以正常列出想要的東西了
找到問題,很棒!謝謝你光臨我的教學網站。
老師,請教一下,Excel中隨便一格讓他=A2,會得到A2的值 有辦法做到A(2+1)讓他給我A3的值嗎?0
老師,被搜尋的資料區域皆為垂直方向,產出的資料想要改成水平方向的,要如何設計?
可以參考:https://isvincent.pixnet.net/blog/post/50076952
請問如何應用多條件?
可以連結: https://isvincent.pixnet.net/blog/search/雙條件 會列出多篇文章供參考。