網友有興趣想要找出在 Excel 中的資料表(如下圖)中,每列最左欄或最右欄的數值及其對應的欄位名稱,該如何處理?
一、取出每列有數值最左欄的內容及對應的欄位
1. 使用陣列公式
(1) 最左欄數值
儲存格G2:{=INDEX(A2:F2,MIN(IF(A2:F2<>"",COLUMN(A2:F2))))}
或 儲存格G2:{=INDEX(A2:F2,MIN((A2:F2<>"")*COLUMN(A2:F2)))}
輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動輸入「{}」。
(2) 對應的欄位
儲存格H2:{=INDEX($A$1:$F$1,MIN(IF(A2:F2<>"",COLUMN(A2:F2))))}
或 儲存格H2:{=INDEX($A$1:$F$1,MIN((A2:F2<>"")*COLUMN(A2:F2)))}
輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動輸入「{}」。
複製儲存格G2:H2,往下各列貼上。
2. 使用 SUMPRODUCT 函數
(1) 最左欄數值
儲存格G2:=INDEX(A2:F2,SUMPRODUCT(SMALL((A2:F2<>"")*COLUMN(A2:F2),
COLUMN(F3)-SUM(1*(A2:F2<>""))+1)))
(2) 對應的欄位
儲存格H2:=INDEX(A1:F1,SUMPRODUCT(SMALL((A2:F2<>"")*COLUMN(A2:F2),
COLUMN(F3)-SUM(1*(A2:F2<>""))+1)))
二、取出每列有數值最右欄的內容及對應的欄位
1. 使用陣列公式
(1) 最右欄數值
儲存格G2:{=INDEX(A2:F2,MAX(IF(A2:F2<>"",COLUMN(A2:F2))))}
或 儲存格G2:{=INDEX(A2:F2,MAX((A2:F2<>"")*COLUMN(A2:F2)))}
輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動輸入「{}」。
(2) 對應的欄位
儲存格H2:{=INDEX($A$1:$F$1,MAX(IF(A2:F2<>"",COLUMN(A2:F2))))}
或 儲存格H2:{=INDEX($A$1:$F$1,MAX((A2:F2<>"")*COLUMN(A2:F2)))}
輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動輸入「{}」。
2. 使用 SUMPRODUCT 函數
(1) 最右欄數值
儲存格G2:=INDEX(A2:F2,SUMPRODUCT(MAX((A2:F2<>"")*COLUMN(A2:F2))))
(2) 對應的欄位
儲存格H2:=INDEX($A$1:$F$1,SUMPRODUCT(MAX((A2:F2<>"")*
COLUMN(A2:F2))))

*****
*****
Hi, 拜讀您的Blog已久十分受用 感謝您的分享 想請問是否有方法找一固定列中最左及最右之有效字串呢? 中間可能會有空白格 但是僅要找兩側最靠外的非空白格即可 十分感謝
請參考這篇:http://isvincent.pixnet.net/blog/post/45646864
請問如果首欄不在A欄的話公式該如何修改? 已試過資料必須靠左才數值帶得出來 感恩
請參考:https://isvincent.pixnet.net/blog/post/50227752
您好,之前參考您的文章,解決不少Excel問題,獲益良多,但目前有個問題不知道該怎麼寫函數,我想在連結中的圖片中的綠框處,顯示2019/12/11~2020/01/08的差距天數,想要可以自動抓F行上次輸入的數值來顯示差距天數,不曉得該如何去寫?可否抽空開導解惑。 https://www.dropbox.com/s/51giz2w4ra929gd/%E6%93%B7%E5%8F%96.JPG?dl=0
請參考這篇:https://isvincent.pixnet.net/blog/post/49981720
與#3一樣的問題? 還是資料沒有從A欄開始此公式不適用?
請參考:https://isvincent.pixnet.net/blog/post/50227752