Microsoft Excel沒有這個公式
只要在第一列A1寫好公式,ArrayFormula函式自動將A2以下填滿。
=ARRAYFORMULA({"編號"; IF(LEN('教師基本資料'!A2:A), TEXT('教師基本資料'!A2:A,"000"), )})
"編號"當成A1的標題欄位。
將同列的星期一至星期五(H欄~L欄)的輔導課節數加總至公式以下欄位。
={"輔導課";
ARRAYFORMULA(
IF(
BYROW(H2:L, LAMBDA(r, SUM(--ISNUMBER(r))))=0,
"",
BYROW(H2:L, LAMBDA(r, SUM(r)))
)
)
}
H2:L → 代表從 H2 開始到 L 欄的範圍 (往下無限)
BYROW(...) → 會逐列處理這個範圍
LAMBDA(r, ...) → 定義一個「計算函式」,r 就是該列的所有儲存格內容。
ISNUMBER(r) → 判斷這一列的每個儲存格是否為數字,會得到一串 TRUE/FALSE。
--ISNUMBER(r) → 把 TRUE/FALSE 轉成 1/0。
SUM(...) → 加總這一列的 1/0,等於「這一列有幾個數字」。
👉 所以 BYROW(H2:L, LAMBDA(r, SUM(--ISNUMBER(r)))) 的結果就是:
每列的「數字個數」。
如果這一列的數字個數 = 0 → 輸出空白 ""
否則 → 計算 SUM(r),即 該列所有數字的總和。
星期區間內有兩個星期名稱,例如"星期二,星期三",中間以逗號隔開 在工作表2、欄位B1以ArrayFormula,以工作表2A1欄位,尋找工作表1第一列A2~A6相符的星期名稱,加總這兩個星期底下每位教師課節數。
工作表1
教師姓名、星期一、星期二、星期三、星期四、星期五
張庭禎 1 3 2 0 1
工作表2
星期區間、節數總計
星期二,星期三
={"節數總計";ARRAYFORMULA(
IF(A2:A="","",
BYROW(A2:A, LAMBDA(r,
SUM(
INDEX('工作表1'!B2:F,
,
MATCH( TRIM(INDEX( SPLIT(r,",") ,1)),
'工作表1'!B1:F1,0 )
)
+
INDEX('工作表1'!B2:F,
,
MATCH( TRIM(INDEX( SPLIT(r,",") ,2)),
'工作表1'!B1:F1,0 )
)
)
))
)
) }
SPLIT(r,",") → 把 星期二,星期三 拆成兩個字。
MATCH(..., '工作表1'!B1:F1,0) → 找出該星期在工作表1第1列的位置。
INDEX('工作表1'!B2:F, , col) → 抓取該欄所有教師的授課數字。
SUM(...) → 對兩個星期欄加總。
BYROW(A2:A, LAMBDA(r, ...)) → 對工作表2的每一列自動計算。
IF(A2:A="","",...) → 避免空白列出現數字。
{"節數總計";...} →標題列文字,底下的列則由ARRAYFORMULA自動產生。