
在Dcard有人求救一個問題:想要將layer與panel的資料提出出來,如下圖。

這個題目是很經典的需求,就是多條件查找,多條件查找有蠻多種不同的解決方法,甚至版本不同解法也是天壤之別哦。
可以先下載練習檔案,做做看,學習效果會更棒唷
準備動作
在寫函數之前,記得要先觀察一下我們想要提取的資料有什麼樣的規則,可以發現A欄中只要是layer與panel都需要抓出來,除了這兩個資料其他都是數字,所以可以利用文字與數字的規則來尋找解法。
今天會分享幾種不同的解法,讓不同版本的人都可以順利使用。
- 版本365 or 2021:FILTET函數
- 全版本通用:輔助欄法
- 全版本通用:萬金油公式
- 篩選
🎗️1.版本365 or 2021
✍🏾FILTER篩選符合條件的資料
函數說明=FILTER(篩選範圍,篩選條件,空格時顯示)
E1=FILTER(A:B,ISTEXT(A:A))

函數說明
ISTEXT這個函數,會判斷資料是否為文字,如果是文字就回傳TRUE,不是文字就回傳FALSE。
非常剛好的FILTER的第二個引數的篩選條件,就是在判斷布林邏輯,所以只要在ISTEXT的結果用FITER把符合TRUE的A:B欄提取出來就可以了。

🎗️2.全版本通用:輔助欄法
- D1=ISTEXT(A1)*1 向下填滿
- E2=SUM($D$1:D1) 向下填滿
- F1=IFERROR(INDEX(A:A,MATCH(ROW(A1),$E:$E,0)),"")向右填滿,向下填滿

函數說明
D1=ISTEXT(A1)*1 向下填滿
利用ISTEXT來判斷所有A欄的每個儲存格是否為文字,是文字就回傳TRUE,不是文字就回傳FALSE,再將TURE與FALSE的結果乘上1,就會的到0與1

E2=SUM($D$1:D1) 向下填滿
用SUM把D欄的0跟1累加,D1:D1的範圍季的要吧第一個D1加上$(絕對參照),變成$D$1:D1,這樣向下填滿的時候就會變成...
$D$1:D2
$D$1:D3
$D$1:D3
這樣就會有累加的效果,而出現的數字就是文字儲存個所出現的次數。

=MATCH(ROW(A1),$E:$E,0)
用MATCH搭配ROW函數找到E欄的1、2、3、4、5、6分別在第1、2、6、7、10、11列。

=INDEX(A:A,MATCH(ROW(A1),$E:$E,0))
用INDEX把MATCH找到的所有A欄相對應的列號內容提取出來,因為待會會向右填滿,記得MACH的E:E要加上$,這樣填滿時參照才不會跑掉。

=IFERROR(INDEX(A:A,MATCH(ROW(A1),$E:$E,0)),"")
上面步驟會發現,向下填滿後會出現許多#N/A,那是因為符合條件的結果數量已經大於向下填滿的儲存格數量,所以找不到適合的內容,這時只要套上IFERROR就可以囉。

🎗️3.全版本通用:萬金油公式
=IFERROR(INDEX(A:A,SMALL(IF(ISTEXT($A$1:$A$14),ROW($1:$14)),ROW(A1))),"")
陣列公式,2019以下,輸入時CTRL+SHIFT+ENTER取代ENTER輸入,向右填滿向下填滿

函數說明
=IF(ISTEXT($A$1:$A$14),ROW($1:$14))
用IF函數將ISTEXT判斷是文字儲存格為TRUE就回傳ROW(相對應列號)。

=SMALL(IF(ISTEXT($A$1:$A$14),ROW($1:$14)),ROW(A1))
利用SMALL函數配合ROW函數,向下填滿後找出每一個儲存格為文字的列號

=INDEX(A:A,SMALL(IF(ISTEXT($A$1:$A$14),ROW($1:$14)),ROW(A1)))
用INDEX把前面公式找到符合條件的列號A欄內容提取出來。

=IFERROR(INDEX(A:A,SMALL(IF(ISTEXT($A$1:$A$14),ROW($1:$14)),ROW(A1))),"")
一樣的會與輔助欄解法一樣,會出現一些錯誤#NUM!,這時就把公式套上IFERROR就可以囉。

🎗️4.篩選法
如果資料不會持續新增,只有一次性的用途,其實也不用絞盡腦汁特別寫函數,用篩選再複製就可以輕易完成了。

分享了這麼多種的方法,你喜歡哪一種呢?還是有其他的作法也歡迎留言告訴我~~

- 👍喜歡的話可以幫忙案個讚、分享來幫助更多人或是右下珍藏起來哦
- 💭留言回復「職場生存讚」讓我知道你把這個小技巧學起來了
- ❤️追蹤我的方格子,學習更多職場小技巧
- ☕請我喝杯咖啡,鼓勵我更有動力分享更多優質內容
- 📈訂閱EXCEL設計新思維,學習更多更深更廣的職場技能
😎可以找到我的地方

raw-image