在 Excel 的工作表中,有時會用到要在資料清單中反推數值所在的儲存格。如下圖,要如何找出儲存格L1的內容對應儲存格A1:J10中相符者的儲存格位址?
【公式設計與解析】
假設儲存格A1:J10的內容具唯一性,不會重覆。
儲存格L4:{=ADDRESS(SUM((A1:J10=L1)*ROW(1:10)),SUM((A1:J10=L1)*
COLUMN(A:J)),1)}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動輸入「{}」。
(1) SUM((A1:J10=L1)*ROW(1:10))
在陣列公式中判斷儲存格A1:J10中和儲存格L1內容相同者,傳回 TRUE/FALSE 陣列。
其中 100 個傳回值中只有一個 TRUE,有 99 個 FALSE。
在陣列公式中 ROW(1:10)={1,2,3,4,5,6,7,8,9,10}。
以上兩式相乘時,TRUE/FALSE 會變為 1/0,其結果會有一個不是0,而有99個0。
最後,再以 SUM 加總這 100 個數字,結果即為符合者的『列號』。
(2) SUM((A1:J10=L1)*COLUMN(A:J))
在陣列公式中判斷儲存格A1:J10中和儲存格L1內容相同者,傳回 TRUE/FALSE 陣列。
其中 100 個傳回值中只有一個 TRUE,有 99 個 FALSE。
在陣列公式中 COLUMN(A:J)={1,2,3,4,5,6,7,8,9,10}。
以上兩式相乘時,TRUE/FALSE 會變為 1/0,其結果會有一個不是0,而有99個0。
最後,再以 SUM 加總這 100 個數字,結果即為符合者的『欄號』。
將第(1)式和第(2)式代入 ADDRESS 函數即可顯示儲存格位址。

老師您好,非常感謝您貼的文章,對我受益良多 雖然時間有點久遠但還是想在此請問一下 因本人使用的時候過萬的數值皆很好找到頂端列 但萬以下的都會跑格式.... 如 A表( 月份/數值) 最低值 7月4日 936,528 最高值 7月5日 1,163,580 B表 的部分則會變成 最低值 #REF! 0 最高值 1月0日 3,200 月份公式 =OFFSET($A$1,0,SUMPRODUCT((G157=$B$2:$BS$29)*COLUMN($B$2:$BS$29))-2) 金額公式 =MIN(IF(COLUMN(B29:M29)/2<>INT(COLUMN(B29:M29)/2),B29:M29,FALSE)) 這邊除了想請問為甚麼會找不到數值以外, 還想請問最小值(隔欄)也可以排除0值的嗎?? 希望老師能幫忙解答 謝謝~
老師您好 上述問題第一點的"找數值"主要是因為本人用到同樣的值才會造成錯誤, 這邊已經修正完成了 (還是也可以避免同樣數值呢OAO?? 現在最需求的便是最小值(隔欄)可以排除0值嗎?