SCAN 関数

この関数は、配列をスキャンし、各値に 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 関数でなかった

SCAN 関数の最後のパラメータが LAMBDA 関数でなかった場合、次のエラーが発生します。

「引数は LAMBDA 関数にする必要があります。」

例: =SCAN(5, C1:C4, 3)

この例では、最後の関数が LAMBDA 関数ではなく、3 になっています。

MAP 関数に渡された SCAN 関数が正しくない

有効ではない名前引数がある場合、次のエラーが発生します。

「関数 LAMBDA の引数 1 は有効な名前ではありません。」

例: =SCAN(5, C1:C4, LAMBDA(C1, 値, C1+値))

この例では、C1 は範囲と競合するため、無効な名前引数です。

LAMBDA 関数の適用によって生成される中間値が単一の値でない

入力配列に LAMBDA 関数を適用して生成される中間値が単一の値でない場合、次のエラーが発生します。

「単一の値が返されます。ネストされた配列の結果は返されません。」

例: =SCAN(5, C1:C4, LAMBDA(累積値, 値, {累積値, 値}))

LAMBDA 関数を適用したときは常に単一の値である中間値が生成される必要があり、別の配列であってはなりません。

関連する関数

  • LAMBDA 関数: 一連の名前引数と、それらの引数を使用する数式を含むカスタム関数を作成して返すことができます。
  • MAP 関数: 指定した配列内の各値を新しい値にマッピングします。
  • REDUCE 関数: 配列を累積結果に減らします。
  • BYROW 関数: 配列を行単位でグループ化します。
  • BYCOL 関数: 配列を列単位でグループ化します。
  • MAKEARRAY 関数: 指定したディメンションの計算結果の配列を作成します。
  • 名前付き関数の作成と使用: LAMBDA 関数と同じように、カスタム関数を作成して保存できます。
true
ラーニング センターにアクセス

職場や学校で Google ドキュメントなどの Google のサービスを利用している場合は、役に立つヒント、チュートリアル、テンプレートをお試しください。Office をインストールせずに Office ファイルを操作する方法、プロジェクト計画やチーム カレンダーを動的に作成する方法、受信トレイを自動的に整理する方法などをご確認いただけます。

検索
検索をクリア
検索を終了
メインメニュー
6451725526521921690
true
ヘルプセンターを検索
true
true
true
true
true
35
false
false