
摘要
這個公式主要用來判斷指定欄位是否有填寫資料,接著在一組狀態欄位中尋找最後一個非空且非零的值,並回傳對應的欄位標題名稱。透過結合IF、COUNTA、INDEX、MAX與COLUMN等函數,公式能動態辨識最新的進度狀態,方便追蹤流程階段。此設計適合管理多階段工作或任務狀態,提升資料準確性與工作效率。對剛入門的Excel使用者來說,理解每個函數的功能與組合方式,有助於靈活應用於不同場景。
關鍵字:
- IF函數, COUNTA, INDEX, MAX, COLUMN, 動態狀態追蹤
✅ Excel 表格範例結構:
A欄 | B欄 | C欄 | D欄 | E欄 | F欄 | G欄 |
---|---|---|---|---|---|---|
項次 | 名稱 | 處理狀態 | 收件 | 處理 | 擱置 | 完成 |
1 | 文件A | 2024/5/1 | ||||
2 | 文件B | 2024/5/1 | 2024/5/3 | |||
3 | 文件C | 2024/5/1 | 2024/5/4 | |||
4 | 文件D | 2024/5/1 | 2024/5/2 | 2024/5/5 |
🎯 目標:
在 C欄 [處理狀態] 自動顯示目前的狀態,根據 D~G欄 最後一個有資料的欄位,顯示對應欄位標題(例如「處理」、「擱置」等)
🧮 套用的 Excel 公式(適用於 Office 2016):
=IF(B2<>"",
IF(COUNTA(D2:G2)>0,
INDEX(D$1:G$1, MAX(IF((D2:G2<>"")*(D2:G2<>0), COLUMN(D2:G2)-COLUMN(D2)+1))),
""),
"")
⚠️ 輸入方式:
這是 陣列公式,請在輸入後按 Ctrl + Shift + Enter
完成後複製公式往下貼即可(Excel 會自動調整列)
🧪 結果預覽:
A欄 | B欄 | C欄 | D欄 | E欄 | F欄 | G欄 |
---|---|---|---|---|---|---|
項次 | 名稱 | 處理狀態 | 收件 | 處理 | 擱置 | 完成 |
1 | 文件A | 收件 | 2024/5/1 | |||
2 | 文件B | 處理 | 2024/5/1 | 2024/5/3 | ||
3 | 文件C | 擱置 | 2024/5/1 | 2024/5/4 | ||
4 | 文件D | 完成 | 2024/5/1 | 2024/5/2 | 2024/5/5 |
✅ 套用的 Excel 公式(適用於 Office 2021 或 Office 365,需測試)
=IF(B2<>"",
LET(
rng, D2:G2,
pos, MAX(FILTER(COLUMN(rng)-COLUMN(D2)+1, (rng<>0)*(rng<>""))),
INDEX(D$1:G$1, pos)
),
"")
📌 說明:
LET()
:讓你命名變數,公式更整潔rng
:代表你要檢查的儲存格範圍(D2:G2)FILTER(...)
:篩選出所有非空且非 0 的欄位位置(像是 [1,2,4])MAX(...)
:取得最後一個有值的位置(例如 4)INDEX(...)
:回傳對應的欄位標題(從 D1:G1)
🥳 優點:
- 不用 Ctrl+Shift+Enter,直接 Enter
- 可讀性強,未來容易維護
- 不需要每一欄都硬寫
IF()
判斷 - 可以拖拉填入多列,馬上就好
🔧 使用條件:
這種寫法只支援 Office 365 與 Office 2021(含 Excel Web版),Excel 2016 會出現 #NAME?
錯誤,因為不認識 LET()
和 FILTER()
。
Tags
泉製作所