SCAN関数の使い方|前の結果を引き継いで累積計算!売上・在庫・進捗に使える便利関数

「売上の合計を日別に見たい」
「在庫の残りを日ごとに追いたい」
「作業の進み具合を累計で出したい」

こんなときにぴったりの関数が、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/1500
6/2800
6/31200
6/41000

数式

=SCAN(0, B2:B5, LAMBDA(これまでの売上, 本日の売上, これまでの売上 + 本日の売上))

結果(出力例)

✅ その日までの合計がパッと見てわかるので、売上の進捗管理に役立ちます。

活用例②|在庫の残数を日ごとに出したい

在庫の出入りがあると、毎日の残り数を計算するのが大変ですよね。
SCAN関数を使うと、1日の在庫の増減をもとに残数を自動計算できます。

シートのデータ例

日付入荷出荷
6/1100
6/202
6/353
6/405

最初に「5個」在庫があったとして、日々の在庫の残りを出すには👇

数式(入出荷の差分をMAPで計算 → SCANで累計)

=SCAN(5, MAP(B2:B5, C2:C5, LAMBDA(入荷, 出荷, 入荷 - 出荷)), LAMBDA(残数, 差分, 残数 + 差分))

💡 MAPで差を出して、SCANで順に足していくことで、毎日の在庫残を自動で出せます!


活用例③|業務の進捗を割合で追いたいとき

各作業の進捗が日々報告される場合、「あとどれくらい進めば終わるのか」がすぐにわかると便利ですよね。

日付完了数
6/12
6/23
6/34
6/41

予定件数が「10件」だったとすると👇

数式(まず累積)

=SCAN(0, B2:B5, LAMBDA(累積, 完了, 累積 + 完了))

さらに「進捗率」にしたいときは、次のように全体で割ります。

=ARRAYFORMULA(SCAN(0, B2:B5, LAMBDA(累積, 完了, 累積 + 完了)) / 10)

📊 毎日の報告が「あと○%で完了!」とわかると、チーム内の共有もしやすくなります。

活用例④|シフトの累計時間を見たいとき

スタッフの勤務時間を日ごとに記録して、これまでに何時間働いたかを追いたいときにも便利です。

日付勤務時間(h)
6/14
6/26
6/35
6/47

数式

=SCAN(0, B2:B5, LAMBDA(累積時間, 今日の時間, 累積時間 + 今日の時間))

✅ 勤務時間の管理や、働きすぎチェックにも活用できます!

REDUCE関数との違いは?

SCAN関数:途中の経過すべてを出す
REDUCE関数:最後の結果だけを出す

関数名出力結果向いている用途
SCAN0, 1, 3, 6, 10…進捗管理・グラフ・履歴の表示
REDUCE10合計だけ知りたいとき

注意点とポイント

✅ よいところ⚠ 注意点
前の結果を使った処理ができる初期値も出力に含まれる(1行多くなる)
「途中経過」も出せるのでグラフにも使えるLAMBDAの引数は2つ(累積値・現在の値)必要
在庫・売上・作業進捗などで大活躍配列のサイズや型が合わないとエラーに注意

まとめ

SCAN関数は、Googleスプレッドシートで「前の値を使いながら、順に計算したい」ときにとても役立つ関数です。

今回紹介したように、

  • 売上の累計
  • 在庫の残り数
  • 作業の進捗割合
  • 勤務時間の累積

など、事務作業やお店・現場の実務でよく使う集計に、幅広く応用できます。

慣れてくると、MAPLAMBDAと組み合わせて、さらに柔軟な処理も可能に。
スプレッドシートをもっと便利にしたい方は、ぜひチャレンジしてみてくださいね。

関連記事(あわせて読みたい)

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

エンジニアを数年経験し、現在は事業会社でデータ分析業務に従事しています。
取得資格:基本情報技術者、G検定、統計検定2級

目次