🎯 結論:SCANは「累積処理を1式で自動化する」最新の神関数です
Excelで仕事をしていると、こんなことを思ったことはありませんか。
- 「売上の累積を自動で出したい…」
- 「在庫の増減を1式で管理したい…」
- 「進捗率の推移をキレイに出したい…」
- 「SUMのコピー地獄から解放されたい…」
私もサラリーマン戦士として Excel と毎日向き合ってきましたが、累積処理は本当に面倒です。 行ごとに式をコピーして、$マークを付けて、SUM の範囲を調整して… 気づけば “壊れやすい集計表” が完成してしまう。
そんな悩みを一撃で解決してくれるのが SCAN(スキャン)関数 です。
SCAN は Excel の中でもかなり新しい関数で、 「累積処理」「時系列処理」「途中経過の出力」 が たった 1 つの式で完結する、まさに“神関数”です。
この記事では、SCAN の基本から応用まで、実務で本当に使えるテクニックをまとめて紹介します。
1. SCAN関数とは?(一言でいうと「累積の自動化」)
SCAN関数は、配列(範囲)を先頭から順番に処理し、途中経過をすべて返す関数です。
コード
=SCAN(初期値, 配列, LAMBDA(累積値, 現在値, 計算式))
- 初期値:累積のスタート(0 が多い)
- 配列:処理したい範囲
- LAMBDA:累積処理の内容
- 第1引数:累積値(前回の結果)
- 第2引数:現在値(今回の値)
SCAN のすごいところは、 「前の結果を使って次を計算する」 という、従来の Excel では面倒だった処理が一瞬でできる点です。
LAMBDA の基礎は LAMBDA関数とは を参照ください。
2. SCAN関数の基本例(まずはこれだけ覚えればOKです)
■ 売上の累積(最も使うやつ)
| 日付 | 売上 |
|---|---|
| 1日 | 10 |
| 2日 | 20 |
| 3日 | 30 |
コード
=SCAN(0, B2:B4, LAMBDA(a, b, a + b))
→ 10|30|60
従来の =SUM($B$2:B2) は不要。コピーも不要。壊れません。
■ 進捗率の累積
コード
=SCAN(0, B2:B4, LAMBDA(a, b, a + b))
→ 20%|50%|60%
プロジェクト管理で最強です。
■ 在庫の増減(入出庫管理)
コード
=SCAN(0, B2:B4, LAMBDA(a, b, a + b))
→ 10|7|12
入庫・出庫の累積が自動で追えます。
3. SCANの応用(ここからが本番です)
SCAN は足し算だけではありません。 LAMBDA の中身を変えるだけで、ほぼ何でも累積できます。
■ 文字列の累積(コメント生成)
コード
=SCAN("", A2:A5, LAMBDA(a, b, a & " → " & b))
→ A → B → C → D
資料説明文の自動生成にも使えます。
■ 累積の最大値(最高記録の推移)
コード
=SCAN(-999, B2:B10, LAMBDA(a, b, MAX(a, b)))
→ その時点での最高値を常に表示。
■ TRUE が出たらずっと TRUE(フラグ保持)
コード
=SCAN(FALSE, B2:B10, LAMBDA(a, b, a OR b))
チェック項目の管理に最適です。
■ 行番号の自動生成(ROW不要)
コード
=SCAN(0, A2:A10, LAMBDA(a, b, a + 1))
→ 1,2,3,4… と自動で番号付け。
4. SCAN × 他関数の組み合わせ(実務で最強)
■ SCAN × FILTER(条件付き累積)
営業部だけの累積売上:
コード
=SCAN(0, FILTER(B2:B100, A2:A100="営業"), LAMBDA(a, b, a + b))
FILTER → SCAN の流れは鉄板です。
FILTER関数を参照
■ SCAN × TAKE(最新◯件の累積)
直近7日間の累積:
コード
=SCAN(0, TAKE(B2:B100, -7), LAMBDA(a, b, a + b))
最新データだけを対象にしたいときに便利です。
■ SCAN × SORT(日付順に並べて累積)
コード
=SCAN(0, SORT(B2:C100, 1, 1), LAMBDA(a, b, a + b))
日付順に並べ替えてから累積できます。
5. SCANとREDUCEの違い(ここで理解が一気に深まります)
| 目的 | SCAN | REDUCE |
|---|---|---|
| 累積結果を全部返す | ◎ | × |
| 最終結果だけ返す | △ | ◎ |
| 時系列の推移 | ◎ | △ |
| 集計の最終値 | △ | ◎ |
SCAN:全部返す REDUCE:最後だけ返す
この違いだけ覚えれば完璧です。
6. SCANが実務で強い理由(サラリーマン戦士の本音)
SCAN を使い始めて感じたのは、 「累積処理がこんなに簡単になるのか…」 という衝撃でした。
- 売上の累積が1式で作れる
- 在庫の増減が自動で追える
- 進捗率の推移が一瞬で出せる
- FILTER と組み合わせると“動的累積”が作れる
- 式をコピーしないから壊れない
- 時系列処理が圧倒的に楽になる
従来の Excel の面倒さが嘘のように消えます。
7. よくあるミスと注意点
❗ LAMBDA の引数の順番を間違える
正しくは LAMBDA(累積値, 現在値, 計算式)
❗ 初期値を忘れる
累積なら 0 が基本です。
❗ FILTER後の配列はサイズが変わる
結果の長さが変わるので参照先に注意。
❗ SCANは“全部返す”
最終値だけ欲しいなら REDUCE。
8. まとめ:SCANは“累積処理の最強ツール”です
- 累積計算を1式で実現
- 売上・進捗・在庫など時系列に最強
- FILTER・SORTと組み合わせるとさらに強力
- REDUCE と使い分けると完璧
- 最新 Excel の配列関数の代表格
Excel で時系列データを扱うなら、 SCAN関数は絶対に覚えておきたい武器です。
コメントを残す