Excel BYCOL 函數:按欄逐欄套用 LAMBDA 運算 完整指南

Excel BYCOL 函數:按欄逐欄套用 LAMBDA 運算 完整指南

📅 發布日期:2026-09-07 🏷️ 分類:動態陣列與高階邏輯 Excel 工作表函數
💡 函數速查卡
函數名稱 BYCOL
所屬類別 邏輯與動態陣列函數 (Logical / Dynamic Array)
傳回類型 單列橫向動態陣列 (Single Row Array)
常用頻率 ★★★★☆

在 Excel 動態陣列(Dynamic Arrays)新時代中,BYCOL 函數能夠將指定的二維陣列或區域**依「欄(Column)」分開**,並對每一欄獨立套用 LAMBDA 自訂邏輯,最後自動溢出(Spill)成一組橫向的單列結果。這大幅簡化了傳統需要向右拖曳複製公式的操作,是極為強大的多欄數據統計利器。

一、 基本語法與參數

BYCOL 函數的標準語法結構如下:

=BYCOL(array, lambda)
參數 說明 預設值 / 必填
array 要依欄拆分處理的**二維陣列或儲存格範圍**(例如 A1:D10)。 必填
lambda 一個接收**單一參數**(代表每一欄向量)的 LAMBDA 函數,並針對該欄傳回單一結果值。 必填

二、 核心功能說明

BYCOL 運作機制是將傳入的陣列按垂直方向拆解,每一欄(Column vector)都會被個別傳遞給內建的 LAMBDA(col, ...)。當該欄經過計算後產生單一彙整結果,BYCOL 會將所有欄的結果結合成一列(Row)的陣列呈現。

在日常動態報表建置中,常見使用情境包括:

  • 一次性計算多個月份/多個單位的欄加總或平均值,無需手動拉複製公式。
  • 檢查每一欄數據是否符合特定條件(如:每一欄是否有包含極端值或空白)。
  • 結合動態過濾函數(如 FILTER)做全自動化的多欄樞紐統計。

三、 實用公式範例

範例 1:一次性計算所有欄位的加總 (SUM)

假設 A1:D10 是一個包含 4 欄數據的表格,使用單一公式即可自動溢出 4 個欄位的總和:

' 自動針對 A1:A10、B1:B10、C1:C10、D1:D10 分別計算 SUM,並輸出單列結果
=BYCOL(A1:D10, LAMBDA(col, SUM(col)))

範例 2:找出每一欄的最大值與最小值之差

計算表格中每一欄數據的極差(Max - Min):

' 自訂 LAMBDA 邏輯:傳回該欄 MAX 減去 MIN
=BYCOL(A1:E20, LAMBDA(c, MAX(c) - MIN(c)))

範例 3:檢查各欄是否含有小於 0 的數值(搭配 ISNUMBER 與 COUNTIF)

審查每一欄是否有異常負數,若有則標示 "有負數",否則顯示 "正常":

' 對每一欄執行 COUNTIF 條件計數與 IF 邏輯判斷
=BYCOL(B2:G50, LAMBDA(column_data, IF(COUNTIF(column_data, "<0") > 0, "有負數", "正常")))

四、 常見陷阱與注意事項

⚠️ 注意事項 1:LAMBDA 必須回傳「單一純量值」
傳入 BYCOLLAMBDA 函數,針對傳入的每一欄必須最終計算出**單一值**(如 SUM、AVERAGE、MAX)。如果 LAMBDA 中傳回的是一個陣列(例如 col + 1 依然是多個值),公式會產生 #CALC! 錯誤。
⚠️ 注意事項 2:溢出空間受阻 (#SPILL! 錯誤)
BYCOL 算出的結果會水平向右延伸溢出。若右側對應的儲存格已被其他資料填滿,將會顯示 #SPILL! 錯誤,只要清空右側阻擋的儲存格即可恢復正常。

五、 相關函數推薦

  • BYROW:與 BYCOL 對應,按「列(Row)」逐列套用 LAMBDA 運算。
  • LAMBDA:用於撰寫自訂邏輯的核心函數,是 BYCOL 的必備參數。
  • MAP:針對陣列中的「每一個儲存格元素」個別套用 LAMBDA 運算。

六、 官方文件連結

想進一步瞭解微軟官方說明與更多邊界情境,可參考:

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...