この関数は、配列をスキャンし、各値に LAMBDA
関数を適用して、中間値を生成します。各関数の適用で取得した中間値の配列を返します。
使用例
SCAN(5, A1:A3, LAMBDA(累積値, 現在の値, 累積値+現在の値))
SCAN(2, A1:A3, LAMBDA(累積値, 現在の値, 累積値*現在の値))
構文
SCAN(初期値, 配列または範囲, LAMBDA)
初期値
:累積値
の初期値。配列または範囲
: スキャン対象の配列または範囲。LAMBDA
: 配列をスキャンするために配列または範囲
の各値に適用するLAMBDA
関数。- 構文:
LAMBDA(名前 1, 名前 2, 数式)
- 要件:
- この
LAMBDA
関数には、2 個の名前
引数と、それらの名前
引数を使用する数式
を指定する必要があります。LAMBDA
を適用するときに、名前 1
は累積値
の現在の値に、名前 2
は配列または範囲
の現在の値
にそれぞれ解決されます。LAMBDA 関数を適用するたびに、累積値
は前回取得した中間値に更新されます。
- この
- 構文:
備考
- 渡された
LAMBDA
関数は、2 個の名前
引数を受け入れる必要があります。そうでない場合、#N/A
エラーが返されます。これらの引数は、累積値
と現在の値
に、この順序で対応しています。引数について次に説明します。名前 1
:累積値
に解決されます。
名前 2
: 入力配列の現在の値
に解決されます。
- LAMBDA 関数を適用するたびに、
累積値
は初期値
で初期化され、前回取得した中間値に更新されます。
-
LAMBDA
関数の適用中、入力配列の現在の値
は行ごとに検出されます。
名前付き関数
はLAMBDA
関数のパラメータとして渡すことができ、この場合はLAMBDA
関数と同様に動作します。詳しくは、名前付き関数についてのページをご覧ください。名前付き関数
は、SCAN
関数のLAMBDA
構文に従っているとともに、2 個の引数プレースホルダが定義されている必要があります。名前付き関数
の後に丸かっこを続けることはできません。
例
配列の累計を返す
サンプルデータ:
A |
|
---|---|
1 |
4 |
2 |
2 |
3 |
1 |
例: =SCAN(5, A1:A3, LAMBDA(累積値, 現在の値, 累積値+現在の値))
結果:
9 |
11 |
12 |
合計値の累計割合を返す
サンプルデータ:
A |
|
---|---|
1 |
4 |
2 |
2 |
3 |
1 |
例: =SCAN(0, A1:A3, LAMBDA(累積値, 現在の値, 累積値 + 現在の値/sum(A1:A3)))
結果:
0.57 |
0.85 |
1 |
配列の累計を返し、数値が 0 になったら、名前付き関数を LAMBDA として計算を再開する
サンプルデータ:
A |
|
---|---|
1 |
4 |
2 |
2 |
3 |
1 |
4 |
0 |
5 |
3 |
6 |
6 |
例: =SCAN(0, A1:A6, RUNNING_TOTAL_0)
名前付き関数: RUNNING_TOTAL_0
が名前付き関数
であり、配列の累計を出力し、現在の値
が 0 になったら計算を再開します。
数式の定義: =if(現在の値=0, 現在の値, 累積値+現在の値)
。ここで、累積値
と現在の値
は RUNNING_TOTAL_0
について定義された引数プレースホルダです。
結果:
4 |
6 |
7 |
0 |
3 |
9 |
一般的なエラー
渡された LAMBDA 関数の名前引数の個数が 2 個ではないLAMBDA
関数の名前
引数の個数が 2 個でない場合、次のエラーが発生します。
「LAMBDA の引数の個数が間違っています。3 個の引数を指定する必要がありますが、2 個を指定しています。」
例: =SCAN(5, C1:C4, LAMBDA(現在の値, 現在の値+1))
この例では、LAMBDA 関数に必要な名前
引数が 2 個であるにもかかわらず、1 個しか指定されていません。
SCAN
関数の最後のパラメータが LAMBDA
関数でなかった場合、次のエラーが発生します。
「引数は LAMBDA 関数にする必要があります。」
例: =SCAN(5, C1:C4, 3)
この例では、最後の関数が LAMBDA
関数ではなく、3
になっています。
有効ではない名前
引数がある場合、次のエラーが発生します。
「関数 LAMBDA の引数 1 は有効な名前ではありません。」
例: =SCAN(5, C1:C4, LAMBDA(C1, 値, C1+値))
この例では、C1
は範囲と競合するため、無効な名前
引数です。
入力配列に LAMBDA
関数を適用して生成される中間値が単一の値でない場合、次のエラーが発生します。
「単一の値が返されます。ネストされた配列の結果は返されません。」
例: =SCAN(5, C1:C4, LAMBDA(累積値, 値, {累積値, 値}))
LAMBDA
関数を適用したときは常に単一の値である中間値が生成される必要があり、別の配列であってはなりません。
関連する関数
- LAMBDA 関数: 一連の
名前
引数と、それらの引数を使用する数式
を含むカスタム関数を作成して返すことができます。 - MAP 関数: 指定した配列内の各値を新しい値にマッピングします。
- REDUCE 関数: 配列を累積結果に減らします。
- BYROW 関数: 配列を行単位でグループ化します。
- BYCOL 関数: 配列を列単位でグループ化します。
- MAKEARRAY 関数: 指定したディメンションの計算結果の配列を作成します。
- 名前付き関数の作成と使用:
LAMBDA
関数と同じように、カスタム関数を作成して保存できます。