[Microsoft 365]
Excelの SCAN(スキャン)関数とREDUCE(リデュース)関数の使い方を紹介します。
Microsoft 365の新関数であるSCAN関数とREDUCE関数は、LAMBDA関数のヘルパー関数です。LAMBDA関数に初期値と配列を渡して、累算の計算を行います。
書式
LAMBDA関数に初期値と配列を渡して累算の結果の配列を返す
=SCAN(初期値, 配列, LAMBDA関数)
引数[初期値]を[LAMBDA関数]の引数[変数1]に、引数[配列]の要素を[LAMBDA関数]の引数[変数2]に渡して累算の計算を行い、結果の配列を返します。
LAMBDA関数に初期値と配列を渡して累算の最後の結果を返す
=REDUCE(初期値, 配列, LAMBDA関数)
引数[初期値]を[LAMBDA関数]の引数[変数1]に、引数[配列]の要素を[LAMBDA関数]の引数[変数2]に渡して累算の計算を行い、最終的な計算結果の値を返します。
■引数
引数 | 説明 |
---|---|
初期値 | 累算の初期値を指定する。[LAMBDA関数]の引数[変数1]に渡される。 |
配列 | 配列やセル範囲を指定する。[LAMBDA関数]の引数[変数2]に渡される。 |
LAMBDA関数 | 戻り値の計算方法を指定するためのLAMBDA関数を指定する。 |
LAMBDA関数の書式は以下のとおりです。LAMBDA関数では引数[変数]を最大253個指定できますが、SCAN関数やREDUCE関数と一緒に使用するときは2つ指定します。
=LAMBDA([変数1, 変数2…], 計算式)
LAMBDA関数の使い方は「LAMBDA関数 ● オリジナルの関数を定義する」を参照してください。
LAMBDA関数の引数[計算式]に足し算の式を指定すれば累計、掛け算の式を指定すれば累積、文字列結合の式を指定すれば文字列の連結が行われます。以下の「使用例1」「使用例2」では、累計計算を例にSCAN関数とREDUCE関数の使い方を紹介します。実際にはこのような単純な計算にこれらの関数を使うことはないと思いますが、関数の使い方の例として参考にしてください。
使用例1…SCAN関数で累計を求める
SCAN関数を使用して、セルB2~B6の数値の累計を求めます。引数[初期値]に「0」、引数[配列]にセルB2~B6を指定し、引数[LAMBDA関数]に「LAMBDA(x,y,x+y)」を指定します。[初期値]の「0」は最初に1回だけ「x」に渡されます。[配列]の要素は順番に1つずつ「y」に渡されて「x」に加算されます。
SCAN関数では、[配列]の要素の数だけ計算が繰り返されます。1回目は「x」に[初期値]が渡されますが、2回目の計算からは「x」に前回の計算結果が渡されます。
実際にセルにSCAN関数を入力するときは、単一のセル(ここではセルC2)を選択して入力します。[Enter]キーを押して数式を確定すると、戻り値の配列のサイズ(ここでは5行1列)の範囲に数式がスピル(隣接するセルに数式が自動拡張すること)し、結果が表示されます。
=SCAN(初期値, 配列, LAMBDA関数)
セルC2 | =SCAN(0,B2:B6,LAMBDA(x,y,x+y))
なお、SCAN関数を修正したいときは、入力時と同様に単一のセルC2を選択して数式を修正し、[Enter]キーで確定してください。
使用例2…REDUCE関数で累計の最終値を求める
図1の数式の「SCAN」を「REDUCE」に変えると、累計の最後の値(図1のセルC6の値)、つまり全体の合計値が求められます。
=REDUCE(初期値, 配列, LAMBDA関数)
セルE2 | =REDUCE(0,B2:B6,LAMBDA(x,y,x+y))
計算過程で生じる個々の結果が必要な場合はSCAN関数、最終的な結果だけ必要な場合はREDUCE関数、と使い分けます。