需求:資料每 21 列需小計 (每 20 筆資料一組),最後再來個總計。手動插入列太瘋狂?用「輔助欄分組編號 + 資料 ▸ 分類彙總」自動化搞定!
=INT((ROW()-2)/20)+1ROW() 取得當前列號。-2 扣除標題列 (第 1 列) 與起始偏移。/20 每 20 筆一組 (題目每 21 列含小計列,實際資料 20 列)。INT() 取整數 → 1,1,1…(20 個 1)、2,2,2…(20 個 2)。+1 讓組號從 1 開始。| 資料起始列 | 公式 | 說明 |
|---|---|---|
| 第 2 列 (標題佔第 1 列) | =INT((ROW()-2)/20)+1 | 本文範例 |
| 第 1 列 (無標題) | =INT((ROW()-1)/20)+1 | |
| 第 N 列 | =INT((ROW()-N)/20)+1 | N 為資料起始列號 |
| 每 N 筆一組 | =INT((ROW()-起始列)/N)+1 | 將 20 改為 N |
🆕 現代替代方案 (Excel 365/2021+):
使用動態陣列公式一次產生含小計/總計的完整報表,無需改動原始資料:
=LET(
data, A2:D100, // 原始資料區域
n, 20, // 每組筆數
grp, INT((SEQUENCE(ROWS(data))-1)/n)+1, // 產生分組號陣列
u, UNIQUE(grp), // 唯一分組號
subtotals, MAP(u, LAMBDA(g, SUM(FILTER(data, grp=g)))), // 各組小計
total, SUM(data), // 總計
VSTACK( // 垂直堆疊
HSTACK(data, grp), // 原始資料+分組號 (可隱藏)
HSTACK(subtotals, u),// 小計列
HSTACK(total, "總計") // 總計列
)
)
優點:原始資料不動、自動溢出、參數化修改 N 即時更新、無輔助欄殘留。
無論傳統分類彙總或現代動態陣列,核心邏輯都是「分組編號 → 群組彙總」,掌握其中任一種,定期報表製作不再手忙腳亂!