SCAN 関数

Excel 365, Excel 2021

概要

SCAN 関数は LAMBDA 関数を使用して配列の各要素を順次処理し、各中間計算結果を含む配列を返します。累積計算や逐次処理に最適で、従来の補助列を使用せずに複雑な配列操作を実行できます。

構文

=SCAN([initial_value], array, lambda(accumulator, value, body))

パラメータ

パラメータ タイプ 必須 説明
initial_value Any はい 処理開始時のアキュムレーター初期値。計算種別に応じて適切な値を設定。
array Array はい スキャン対象となる配列データ。複数列・行に対応。
lambda LAMBDA はい 累積計算ロジックを定義する LAMBDA 関数。3つの引数(accumulator, value, body)が必要。

SCAN関数の使用

SCAN は配列の各要素に対して累積計算を実行し、すべての途中経過結果を配列として返します。階乗計算、累積合計、文字列連結などの逐次処理に使用します。従来の方法では補助列が必要でしたが、SCAN により1つの数式で完結します。

SCANの一般的な例

階乗のリスト作成

=SCAN(1, A1:A5, LAMBDA(a,b,a*b))

1から5までの階乗(1, 1, 2, 6, 24, 120)を1式で計算。a は累積値、b は現在の値。

累積合計

=SCAN(0, B1:B10, LAMBDA(acc,val,acc+val))

指定範囲の累積合計を計算。initial_value を 0 に設定。

文字列連結

=SCAN("", C1:C5, LAMBDA(acc,val,acc&val))

配列内の文字列を順次連結。initial_value は空文字列 "" 。

よくある質問

SCAN は全中間結果を配列で返すのに対し、REDUCE は最終結果のみを返します。累積過程が必要な場合に SCAN を使用。

SCAN では必ず 3 個(accumulator, value, body)が必要です。不足すると #VALUE! エラーが発生。

はい。列ごと・行ごとに独立してスキャンを実行します。

一般的なエラーと解決策

#VALUE! エラー

Cause: LAMBDA に不正なパラメーター数または無効な LAMBDA 関数

Solution: LAMBDA(acc,val,計算式)の形式で 3 つのパラメーターを正確に記述。

#N/A エラー

Cause: 配列内にエラー値が存在

Solution: 配列データを事前に確認し、エラー値を除去または IFERROR で処理。

予期しない結果

Cause: initial_value の型が不適切

Solution: 数値計算は 0 または 1、文字列は "" を設定。

注記

  • Excel 365 および Excel 2021 でのみ使用可能
  • MAP/REDUCE/BYCOL/BYROW と組み合わせると強力
  • 動的配列関数群の一部として設計
  • パフォーマンスが優れた大規模配列処理に最適

互換性

利用可能: Excel 365, Excel 2021

利用不可: Excel 2019 以前, Excel 2016 以前

コンテンツ最終レビュー: December 9, 2025
更新頻度: 必要に応じて
テスト済みExcelバージョン: Excel 365, Excel 2021