教務統計中,常需依多維條件 (班級、科目、分數區間) 統計符合條件的學生人數。WPS 表格 條件格式 搭配 SUMPRODUCT 多條件求和,能實現動態、無輔助欄的即時統計,且隨原始資料變動自動更新。
場景與目標
- 資料來源:學生清單含班級 (欄 A)、語文 (欄 B)、數學 (欄 C)、英語 (欄 D)、物理 (欄 E) 等科目分數。
- 統計目標:各班級各科目達到特定分數線 (如語文 ≥100、數學 ≥120、英語 ≥110、物理 ≥80) 的學生人數。
- 結果呈現:交叉表,列為班級,欄為科目,儲存格為人數。
核心公式邏輯:SUMPRODUCT 多條件計數
原理: `SUMPRODUCT` 可對陣列進行元素級乘積求和。邏輯判斷式 `條件` 產生 `TRUE/FALSE` 陣列,乘以 `1` 轉為 `1/0`,再乘以權重陣列 (此處為常數 1 陣列) 求和,即得符合所有條件的計數。
操作步驟
- 建立統計表:M1:P1 列科目標題,L2:L下 列班級清單 (如 1 班、2 班…)。
- 選取 M2 儲存格 (1 班語文統計),點擊 「插入函數」 (fx) → 選擇 「多條件求和」 (或直接輸入公式)。
- 參數設定 (向導模式):
- 待求和區域:`$A$2:$A$650` (班級欄,作為權重陣列,全為 1 時等價計數)。
- 條件 1:班級 = 1 班 → `OFFSET($A$2:$A$650,0,0)=$L2` (相對引用班級標籤)。
- 條件 2:語文 ≥ 100 → `OFFSET($A$2:$A$650,0,1)>=100` (OFFSET 向右偏移 1 欄至語文欄)。
點擊「插入公式」獲得基礎公式:
=SUMPRODUCT($A$2:$A$650,1*(OFFSET($A$2:$A$650,0,0)=$L2)*(OFFSET($A$2:$A$650,0,1)>=100))
關鍵修正: 因 `$A$2:$A$650` 非全 1,直接求和得「班級代碼總和」而非人數。需除以班級代碼值 (假設班級代碼為數字 1,2,3…) 或改用常數 1 陣列。修正公式:
=(SUMPRODUCT($A$2:$A$650,1*(OFFSET($A$2:$A$650,0,0)=$L2)*(OFFSET($A$2:$A$650,0,1)>=100)))/$L2
或更穩健:將第一參數改為 `ROW($A$2:$A$650)^0` (產生全 1 陣列)。

- 複製公式:M2 向右自動填充至 P2 (語文/數學/英語/物理),依次修改 `OFFSET` 偏移欄數 (0→1→2→3) 及分數門檻值。
- 選取 M2:P2 向下填充至所有班級列,絕對/相對引用 (`$L2` 行遞增、欄固定) 自動匹配各班級。
關鍵引用技巧總結
- 絕對引用 `$A$2:$A$650`:鎖定資料範圍不隨填充漂移。
- 混合引用 `$L2`:欄固定 (班級標籤欄),行隨填充遞增 (1班→2班…)。
- 相對引用 `B$2:B$650` (條件 2 中):行固定,欄隨向右填充自動偏移至對應科目欄 (C、D、E…)。
優勢總結
- 無需輔助欄、無需樞紐分析表刷新、無需 VBA。
- 原始資料異動 (增/刪/改分) 統計表即時同步。
- 公式透明可稽核,易於維護移交。