[Excel] 公式來自動追蹤工作流程

摘要

這個公式主要用來判斷指定欄位是否有填寫資料,接著在一組狀態欄位中尋找最後一個非空且非零的值,並回傳對應的欄位標題名稱。透過結合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/12024/5/3  
3文件C 2024/5/1 2024/5/4 
4文件D 2024/5/12024/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/12024/5/3  
3文件C擱置2024/5/1 2024/5/4 
4文件D完成2024/5/12024/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()

陳小泉

喜愛用文字說明自己眼中所見的一切

較新的 較舊

نموذج الاتصال