Excel SCAN 関数(365)
SCAN 関数は、LAMBDA 関数を配列内の各値に適用し、スキャン中に得られる中間値を含む配列を返します。

構文
=REDUCE ()[initial_value],array,lambda(accumulator, value))
引数
- 初期値(省略可):アキュムレータの初期値を設定します。
- 配列(必須):スキャンする対象の配列です。
- LAMBDA(必須):配列をスキャンする際に適用されるカスタム LAMBDA 関数です。
- アキュムレータ(必須):集計された値で、最終結果として返されます。
- 値(必須):配列内の各要素に適用する計算式です。
返す値
SCAN 関数 SCAN functionは、結果の配列を返します。
関数に関する注意事項
- SCAN 関数は、Microsoft 365 向けExcelに新たに導入されました。そのため、以前のバージョンのExcel ではご利用いただけません。Microsoft 365 向けExcel では新しい動的配列数式が採用されており、SCAN 関数を配列数式として入力する際に、Ctrl+Shift+Enter を押す必要はありません。
- #VALUE!エラー値は、以下のいずれかの状況が発生した場合に表示されます:
- 無効な LAMBDA 関数が指定された場合;
- パラメーターの数が正しくない場合。
- 初期値 initial_value 引数は、アキュムレータの開始値を設定するために使用されます。最初の結果が返された後、初期値はその結果に更新され、この処理が配列内のすべての要素に対して列から行へと繰り返されます。テキストを扱う場合は、初期値を「」に設定してください。
例1:
下図のようにデータの配列があります。列から行に向かって、セル内の値と隣接するセルの値を順次加算したい場合、各セルの値とその隣接セルの値を順に足し続けるには、以下の手順を実行してください:
以下の数式をセルF6にコピーし、Enterキーを押して、結果を取得してください。
=SCAN()0,B6:D9,LAMBDA(a,b,a+b))

注:上記の例では、SCAN 関数は数値を処理しており、指定された初期値引数は0に設定されています。この場合、省略することも可能で、空白に置き換えることができます。たとえば、セルF6の数式は次のように変更できます:
=SCAN(),B6:D9,LAMBDA(a,b,a+b))
例2:
下図のようにデータの配列があります。指定された配列内の文字を連結し、中間値を含む配列を返したい場合、以下の手順を実行してください:
以下の数式をセルF6にコピーし、Enterキーを押して、結果を取得してください。
=SCAN()「」,B6:D7,LAMBDA(a,b,a&b))

関連関数:
Excel 関数 MAP
MAP 関数は、指定された配列内の各値にLAMBDA 関数を適用し、新しい値にマッピングして構成される配列を返します。
Excel 関数 LAMBDA
Excel の LAMBDA 関数を使えば、ワークブック全体で再利用可能なカスタム関数を簡単に作成できます。
Excel 関数 Reduce
REDUCE 関数は、配列内の各値にLAMBDA 関数を適用し、アキュムレータに蓄積された値を返すことで、配列を単一の累積値に縮約します。