根據上一篇文章:

Excel-查詢指定字串所在的儲存格位址(MATCH,ADDRESS,IFERROR)

如果指定的文字位於多個儲存格時,如何列出標示位址和其內容的清單?

image

【公式設計與解析】

儲存格E2:

{=IFERROR(ADDRESS(SMALL(IF(IFERROR(FIND($D$2,$A$2:$A$23),0)>0,
ROW($A$2:$A$23),""),ROW(1:1)),1,4),"")}

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

(1) FIND($D$2,$A$2:$A$23)

在陣列公式中,利用 FIND 函數找出在儲存格A2:A23範圍中的每個儲存格是否含有儲存格D2的內容。若有,會傳回一個數值(位置);若否,傳回錯誤訊息。

(2) IFERROR(FIND($D$2,$A$2:$A$23),0)

若第(1)式傳回錯誤訊息,則利用 IFERROR 函數將錯誤訊息轉換為『0』。

(3) IF(第(2)式>0,ROW($A$2:$A$23),"")

在陣列公式中,若第(2)式傳回數值並且大於 0,表示該儲存格含有儲存格D2的內容,則該式會傳回在ROW($A$2:$A$23)所對應的列號,否則傳回空字串。

(4) SMALL(第(3)式,ROW(1:1))

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

(5) ADDRESS(第(4)式,1,4)

將第(4)式代入 ADDRESS 函數中,即可傳回對應的儲存格位址。(參數 4 乃指定傳回相對位址)

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

若儲存格A2:A23的資料內容不存在儲存格D2的內容,則以 IFERROR 函數使其傳回空字串。

同理,儲存格F2:

{=IFERROR(OFFSET($A$1,SMALL(IF(IFERROR(FIND($D$2,$A$2:$A$23),0)>0,
ROW($A$2:$A$23),""),ROW(1:1))-1,0),"")}

在此特別改用 OFFSET 函數來取得儲存格內容,你可以自行練習看看。

請參閱上一篇文章:

Excel-查詢指定字串所在的儲存格位址(MATCH,ADDRESS,IFERROR)

Excel-查詢指定字串所在的儲存格位址(MATCH,ADDRESS,FIND,OFFSET)

【延伸閱讀】

Excel-查詢資料常用指令MATCH、INDEX、VLOOKUP、OFFSET

Excel-表格轉換(MATCH,INDIRECT,OFFSET)

Excel-使用不同函數進行查表

Excel-取出一個儲存格裡的英文字和中文字(MID,MATCH)

Excel-根據日期和班別進行雙條件查詢

Excel-製作隨輸入字元列出可選項目的下拉式清單

Excel-INDEX的應用:計算指定日期前的累計金額

Excel-解決查詢資料不在第一欄無法使用VLOOKUP時如何查詢

Excel-單一欄位篩選與跨欄位篩選

Excel-解析OFFSET函數

學不完.教不停.用不盡文章列表

arrow
arrow

    vincent 發表在 痞客邦 留言(6) 人氣()