一連の名前とそれらを使用する数式を含むカスタム関数を作成して返すことができます。数式を計算するために、名前で宣言されている個数の値を指定して、返された関数を呼び出します。
使用例
LAMBDA(Salary, Salary*0.3)(1000)
LAMBDA(Temp, (5/9)*(Temp-32))(85)
構文
LAMBDA(名前, 数式)
名前:数式内で使用する名前です。この名前は識別子である必要があり、LAMBDAによって返されるカスタム関数に渡される実際の値に解決されます。数式: 計算される数式です。前のパラメータで宣言された名前を使用します。
メモ
- ある名前付き関数の引数の入力値として別の関数が指定されるようにする場合は、
LAMBDAまたは名前付き関数を使用します。
例
サンプルデータ
単体の LAMBDA
税率を 30% と仮定して給与税を計算する LAMBDA 関数を記述できます。関数の後ろに給与の金額を入力します。
例: =LAMBDA(salary, salary*0.3)(C5)
1 か月目の税金を計算します。
LAMBDA ヘルパー関数内の LAMBDA
高度な配列操作を実行するには、LAMBDA ヘルパー関数(LHF)内で LAMBDA 関数を使用します。
例: =MAP(C5:C10, LAMBDA(salary, salary*0.3))
これにより、C5:C10 の配列の各項目について、salary * 0.3 の数式が計算されます。
名前付き関数内の LAMBDA
LAMBDA 関数は、名前付き関数の引数の一部として使用します。詳しくは、名前付き関数についての記事をご覧ください。
名前付き関数: AVG_MONTHLY_TAX(range, tax_calculator_function)
数式の定義: =tax_calculator_function(sum(range))/count(range)
LAMBDA 関数を使って tax_calculator_function 引数を記述できます。
例: =AVG_MONTHLY_TAX(C5:C10,LAMBDA(range, range*0.3))
1~6 か月目の期間における月額の税金の平均を計算します。
一般的なエラー
名前引数が識別子になっていない
例: =LAMBDA(3, x+1)(3)
最初の引数が識別子でない場合、以下のエラーが発生します。
識別子の要件:
- 「A1」や「A2」などの範囲を指定することはできません。
- スペースや特殊文字を含めることはできません。ドットとアンダースコアは使用できます。
- 「9hello」のように、先頭に数字を使用することはできません。
LAMBDA が呼び出されない
このエラーは、LAMBDA の後ろに値を含む呼び出しが記述されていないために発生します。
例: =LAMBDA(salary, salary*0.3)
salary の値が渡されない場合、以下のエラーが発生します。
名前付き関数の引数として LAMBDA が使われている場合は、名前付き関数の定義内で必要な値を指定してその LAMBDA を参照するプレースホルダを呼び出していないことを意味します。
例: 数式の定義で =tax_calculator_function(sum(range))/count(range) ではなく =tax_calculator_function/count(range) と入力した場合、
以下のエラーが発生します。
ヒント: LAMBDA ヘルパー関数内の LAMBDA の場合、このエラーは発生しません。LAMBDA ヘルパー関数は、指定された入力範囲で自動的に LAMBDA を使用します。
LAMBDA ヘルパー関数
LAMBDA ヘルパー関数(LHF)は、入力配列とともに、再利用可能な LAMBDA を引数として受け取るネイティブ関数です。入力配列の各値に対して LAMBDA 内で指定された数式を実行するため、高度な配列演算で有用です。再利用可能な LAMBDA を、LAMBDA 関数または名前付き関数のいずれかとして渡すことができます。
LAMBDA ヘルパー関数:
- MAP 関数: 指定した配列内の各値を新しい値にマッピングします。
- REDUCE 関数: 配列を累積結果に減らします。
- BYCOL 関数: 配列を列単位でグループ化します。
- BYROW 関数: 配列を行単位でグループ化します。
- SCAN 関数: 配列をスキャンして、中間値を生成します。
- MAKEARRAY 関数: 指定したディメンションの計算結果の配列を作成します。
関連する関数
名前付き関数の作成と使用:LAMBDA と同様に、カスタム関数を作成して保存できます。