在 Excel 中處理表格資料、陣列運算或動態欄位時,COLUMNS 函數能回傳指定範圍中的「欄數」,是建立公式自動化、欄位計算與報表設計的重要工具。它與 ROWS 函數相對,專注於橫向欄位的結構分析。
🔹快速摘要(語法、用途、常見場景)
- 用途:計算指定範圍中的欄數(整數)
- 語法:
=COLUMNS(範圍) - 常見場景:欄位計算、陣列分析、動態公式設計、報表欄位控制、欄數驗證
一、COLUMNS 函數語法與用途
語法:
=COLUMNS(array)
- array:任意範圍或陣列
- 回傳結果為該範圍的「欄數」(整數)
=COLUMNS(A1:C1) 回傳 3,代表橫向有三欄。二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:計算三欄範圍的欄數
=COLUMNS(A1:C1)
回傳 3。
範例二:計算單欄範圍的欄數
=COLUMNS(B2:B10)
回傳 1。
範例三:計算動態範圍的欄數
=COLUMNS(A1:INDEX(A1:Z1,5))
回傳 5。
範例四:搭配 INDIRECT 處理文字型範圍
=COLUMNS(INDIRECT("A1:D1"))
回傳 4。
範例五:搭配 TRANSPOSE 分析橫向陣列
=COLUMNS(TRANSPOSE(A1:A5))
回傳 1(因為轉為直向)。
🔸進階範例
範例六:搭配 IF 判斷是否為多欄資料
=IF(COLUMNS(A1:D1)>1,"多欄","單欄")
範例七:建立動態欄位標記
="欄數:" & COLUMNS(A1:Z1)
範例八:批次分析多筆欄位結構(Excel 365)
=MAP(A2:A100, LAMBDA(x, COLUMNS(x)))
假設每列為一筆橫向陣列。
範例九:搭配 INDEX 擷取最後一欄資料
=INDEX(A1:Z1, COLUMNS(A1:Z1))
範例十:搭配 SEQUENCE 建立動態欄位索引
=SEQUENCE(1,COLUMNS(A1:F1),1,1)
回傳 {1,2,3,4,5,6}。
三、常見問題解答(FAQ)
Q1:COLUMNS 回傳的是什麼格式?
回傳整數,代表指定範圍的欄數。
Q2:COLUMNS 可以處理垂直範圍嗎?
可以,但回傳的是橫向欄數,例如 COLUMNS(A1:A10) 回傳 1。
Q3:COLUMNS 可以處理動態陣列嗎?
可以,支援動態陣列與 Spill 範圍。
Q4:COLUMNS 可以搭配哪些函數使用?
常見搭配 INDEX、SEQUENCE、IF、INDIRECT、MAP、LAMBDA 等。
Q5:COLUMNS 可以處理文字型範圍嗎?
可以,建議搭配 INDIRECT 轉換為有效範圍。
四、注意事項與錯誤排除
- 若範圍為空,會回傳
0或錯誤 - 若輸入非範圍或陣列,會回傳
#VALUE! - COLUMNS 只計算橫向欄數,不含列數
- 適用於欄位結構分析、公式自動化與報表設計
- 建議搭配錯誤防呆邏輯處理格式異常輸入
五、延伸技巧與相關函數
若你需要進一步處理欄位結構或陣列分析,可搭配以下函數:
你可以使用 ROWS 函數 計算範圍的列數,與 COLUMNS 相對,適用於垂直結構分析。
若你需要建立動態欄位索引或標記,可搭配 SEQUENCE 函數,例如 SEQUENCE(1,COLUMNS(A1:F1))。
若你想擷取特定欄位資料,可搭配 INDEX 函數,例如 INDEX(A1:F1,COLUMNS(A1:F1)) 擷取最後一欄。
若你需要批次處理欄位結構,可搭配 MAP 與 LAMBDA 函數,建立自訂邏輯並套用至整欄資料。
這些函數能與 COLUMNS 組合成一套完整的「欄位分析 → 結構判斷 → 動態索引 → 批次處理」流程,適用於報表設計、資料清理與公式自動化。
六、結語與延伸閱讀推薦
COLUMNS 函數是 Excel 中專門處理欄位結構分析的基礎工具,適合用在報表設計、公式自動化、欄位判斷與資料標記等情境。學會 COLUMNS 後,你可以進一步探索:
- [ROWS 函數教學]:計算列數的對應工具
- [SEQUENCE 函數教學]:建立動態索引與陣列結構
- [MAP 函數教學]:批次處理與欄位邏輯的動態技巧











