「売上の合計を日別に見たい」
「在庫の残りを日ごとに追いたい」
「作業の進み具合を累計で出したい」
こんなときにぴったりの関数が、GoogleスプレッドシートのSCAN関数です。
SCAN関数は、ひとつ前の計算結果を使いながら、順番に処理していくという少しめずらしい働きをする関数です。
初めて見る方にはちょっと難しそうに感じるかもしれませんが、実は、現場の事務作業やお店の売上・在庫管理などにとても便利なんです。
この記事では、SCAN関数の基本の使い方から、
実際の業務で使いやすい「売上の累計」や「在庫の残り数」などの例を交えながら、
できるだけわかりやすく解説していきます。
SCAN関数ってどんな関数?
まずはSCAN関数の役割と、基本の形から見ていきましょう。
SCAN関数の構文
=SCAN(初期値, 配列, LAMBDA(累積値, 現在の値, 処理内容))
引数 | 内容の説明 |
---|---|
初期値 | 最初に使う値(たとえば「0」や「””」など) |
配列 | 処理したいデータの範囲(1列のデータなど) |
LAMBDA関数 | 累積値 (これまでの結果)と、現在の値 をどう処理するか |
この関数は、たとえば売上や在庫数などを「毎日少しずつ足していく」ような処理にぴったりです。
SCAN関数の出力のイメージ
たとえば、A列に以下のような数値が入っているとします。

このとき、以下の数式を使うと
=SCAN(0, A2:A5, LAMBDA(前の合計, 今の数値, 前の合計 + 今の数値))
結果はこのようになります。

最初に「0」からスタートして、1 → 1+2 → 3+3 → 6+4……というように、順に足していった結果です。
✅ SCAN関数は、途中の経過も全部表示してくれるのがポイントです!
活用例①|売上の累計を出したい
日ごとの売上を見つつ、どこまで売れているかの合計も見たい場合に使えます。
シートのデータ例
日付 | 売上 |
---|---|
6/1 | 500 |
6/2 | 800 |
6/3 | 1200 |
6/4 | 1000 |
数式
=SCAN(0, B2:B5, LAMBDA(これまでの売上, 本日の売上, これまでの売上 + 本日の売上))
結果(出力例)

✅ その日までの合計がパッと見てわかるので、売上の進捗管理に役立ちます。
活用例②|在庫の残数を日ごとに出したい
在庫の出入りがあると、毎日の残り数を計算するのが大変ですよね。
SCAN関数を使うと、1日の在庫の増減をもとに残数を自動計算できます。
シートのデータ例
日付 | 入荷 | 出荷 |
---|---|---|
6/1 | 10 | 0 |
6/2 | 0 | 2 |
6/3 | 5 | 3 |
6/4 | 0 | 5 |
最初に「5個」在庫があったとして、日々の在庫の残りを出すには👇
数式(入出荷の差分をMAPで計算 → SCANで累計)
=SCAN(5, MAP(B2:B5, C2:C5, LAMBDA(入荷, 出荷, 入荷 - 出荷)), LAMBDA(残数, 差分, 残数 + 差分))

💡
MAP
で差を出して、SCAN
で順に足していくことで、毎日の在庫残を自動で出せます!
活用例③|業務の進捗を割合で追いたいとき
各作業の進捗が日々報告される場合、「あとどれくらい進めば終わるのか」がすぐにわかると便利ですよね。
日付 | 完了数 |
---|---|
6/1 | 2 |
6/2 | 3 |
6/3 | 4 |
6/4 | 1 |
予定件数が「10件」だったとすると👇
数式(まず累積)
=SCAN(0, B2:B5, LAMBDA(累積, 完了, 累積 + 完了))

さらに「進捗率」にしたいときは、次のように全体で割ります。
=ARRAYFORMULA(SCAN(0, B2:B5, LAMBDA(累積, 完了, 累積 + 完了)) / 10)

📊 毎日の報告が「あと○%で完了!」とわかると、チーム内の共有もしやすくなります。
活用例④|シフトの累計時間を見たいとき
スタッフの勤務時間を日ごとに記録して、これまでに何時間働いたかを追いたいときにも便利です。
日付 | 勤務時間(h) |
---|---|
6/1 | 4 |
6/2 | 6 |
6/3 | 5 |
6/4 | 7 |
数式
=SCAN(0, B2:B5, LAMBDA(累積時間, 今日の時間, 累積時間 + 今日の時間))

✅ 勤務時間の管理や、働きすぎチェックにも活用できます!
REDUCE関数との違いは?
SCAN関数:途中の経過すべてを出す
REDUCE関数:最後の結果だけを出す
関数名 | 出力結果 | 向いている用途 |
---|---|---|
SCAN | 0, 1, 3, 6, 10… | 進捗管理・グラフ・履歴の表示 |
REDUCE | 10 | 合計だけ知りたいとき |
注意点とポイント
✅ よいところ | ⚠ 注意点 |
---|---|
前の結果を使った処理ができる | 初期値も出力に含まれる(1行多くなる) |
「途中経過」も出せるのでグラフにも使える | LAMBDAの引数は2つ(累積値・現在の値)必要 |
在庫・売上・作業進捗などで大活躍 | 配列のサイズや型が合わないとエラーに注意 |
まとめ
SCAN関数は、Googleスプレッドシートで「前の値を使いながら、順に計算したい」ときにとても役立つ関数です。
今回紹介したように、
- 売上の累計
- 在庫の残り数
- 作業の進捗割合
- 勤務時間の累積
など、事務作業やお店・現場の実務でよく使う集計に、幅広く応用できます。
慣れてくると、MAP
やLAMBDA
と組み合わせて、さらに柔軟な処理も可能に。
スプレッドシートをもっと便利にしたい方は、ぜひチャレンジしてみてくださいね。
関連記事(あわせて読みたい)
- MAP関数の使い方|1行ずつまとめて処理!スプレッドシートで使える配列関数
- LET関数の使い方|Googleスプレッドシートの数式がスッキリ見やすくなる便利ワザ
- [LAMBDA関数の使い方(準備中)]