ExcelやGoogle スプレッドシートでのLAMBDA(ラムダ)関数の使い方
ExcelのLAMBDA(ラムダ)関数とは、Microsoft 365で導入された高度な関数で、ユーザー自身がカスタム関数を定義することができます。セル内で一時的に使う複雑な計算を簡潔にまとめたり、再利用可能な名前付き関数として保存したりできます。
これまではVBAやアドインを使う必要があったカスタム関数を、完全にExcelのセルだけで実現できるのが特徴です。
業務で頻繁に行う計算を再利用可能な名前付き関数として保存しておけば、通常のExcel関数と同じように数式バーから簡単に実行できます。これにより、毎回計算式を入力する手間が省け、とても便利です。
LAMBDA関数はGoogle スプレッドシートでも利用可能です。
ただ、Microsoft ExcelとGoogle スプレッドシートでは、関数の定義方法で少し違う部分があります。
LAMBDA関数の使い方を、アプリケーションごとの違いも含めてご紹介します。
LAMBDA関数の構文
まずは、LAMBDA関数の構文を確認しておきましょう。
構文
=LAMBDA([引数1, 引数2…], 処理式)
引数:
関数に渡すデータや値の名前(変数)を指定します。最大253個まで引数を指定可能です。
引数は省略可能で、省略した場合は処理式の中で直接値を指定します。
処理式:
引数を使って実行する計算や操作を記述します。他のExcel関数や演算子も自由に使えます。
返される値がLAMBDA関数の出力となります。
ここからは、LAMBDA関数の使い方をサンプルを交えてご紹介します。
再利用可能な計算ロジックの作成
LAMBDA関数を使用すると、計算ロジックを名前付き関数として保存して複数のセルやシートで再利用することができます。また、一時的に利用することも可能ですので、それについても知っておくと良いでしょう。
まずは、ものすごくシンプルな計算として、税込み価格の計算をLAMBDA関数を使って実行してみます。
LAMBDA関数に引き渡す引数の設定と、引数を使って税込み価格を求める計算ロジックを作成します。
● 消費税込み価格
=LAMBDA(価格, 価格 * 1.1)
一時的に利用する場合は、最後に引数の値を設定します。
=LAMBDA(価格, 価格 * 1.1)(B3)
一時的な計算では、これまでの数式の入力と変わらないので、LAMBDA関数を使う意味はそれほど感じられません。
ここからは、よく使う計算式(処理式)を再利用可能な名前付き関数として定義していきます。
要するに自分で関数を作るということです。
関数の定義は、数式のタブから行います。
リボンの「数式」タブから定義された名前の項目の「名前の定義」を選択します。
名前の定義にて、名前の項目にわかりやすい名前を記述し、参照範囲の項目にLAMBDA関数の計算式(処理式)を記述します。最後の関数を実行する際の引数は必要ありません。
関数名は基本、大文字のアルファベットで定義するのが暗黙のルールですが、日本語でも定義が可能です。
範囲の項目はブックのままでOKです。
コメントの項目は必須ではありませんが、関数の利用時に説明が表示されることがあるので、簡単な説明を入れておいてもいいでしょう。
設定ができましたら、OKボタンを選択して関数の定義の完了となります。
再利用可能な名前付き関数として保存した関数は、数式バーに関数名を記述する、またはリボンの「数式」タブから「数式で利用」を選択し、保存してある関数を選択することで数式バーに取り込むことができます。
あとは、税込み価格の関数に引数を指定して実行します。
対象のセルにもオートフィル機能で、書式をコピーして処理をします。
サンプルでは関数名を日本語(税込み価格)としていますが、大文字のアルファベットで「TAXINCLUDED」としてもいいでしょう。
LAMBDA関数では、引数を複数指定して処理式を実行することができます。
例えば、広告やWebページなどが表示された回数に対して、ユーザーがクリックした数の割合を指す指標であるクリック率(CTR)を求める場合には、以下のように処理式を指定します。
● クリック率(CTR)
=LAMBDA(imp,click,click/imp*100)
一時的に利用する場合、サンプルでは以下のようになります。
=LAMBDA(imp,click,click/imp*100)(B3,C3)
もちろん再利用しやすいように、名前付き関数として保存しておきましょう。
関数に名前をつける際に、複数の文字列・単語を組み合わせることがよくありますが、関数名で記号を使う場合は、アンダースコア( _ )のみ使用することができます。
参照範囲の項目は「=LAMBDA(imp,click,click/imp*100)」とします。
このように複数の引数を使って処理式を実行できるので、複雑な計算でも関数として保存して便利に利用していくことができます。
カスタムロジックの簡略化
ExcelではIF関数などを使い、条件分岐を行なって処理をすることができますが、複雑な条件分岐や計算式をカスタム関数としてまとめることで、表計算を簡潔にできます。
例えば、成績評価を判定するような式では、IF関数を使って値を判別して処理していくことになります。このような複雑な条件分岐が含まれる式でも、LAMBDAで定義して利用していくことができます。
● 成績評価
=LAMBDA(点数, IF(点数 >= 90, "A", IF(点数 >= 80, "B", IF(点数 >= 70, "C", IF(点数 >= 60, "D", "F")))))
一時的に利用する場合は以下のように、点数のセルの値を引数として関数を実行します。
名前付き関数として保存する場合、参照範囲の項目は「=LAMBDA(点数, IF(点数 >= 90, “A”, IF(点数 >= 80, “B”, IF(点数 >= 70, “C”, IF(点数 >= 60, “D”, “F”)))))」とします。
名前はわかりやすく「成績評価」としておきます。
あとは成績評価の関数に対して引数を指定して処理を実行します。
複雑な条件分岐も関数として保存しておけば、引数を指定するだけと手軽に実行できるようになります。
名前付き関数の確認と編集
これまでに保存した名前付き関数は、リボンの「数式」タブの「名前の管理」から確認することができます。
関数を選択すると、ウィンドウ下で参照範囲が確認できるほか、上部のボタンからは編集したり必要がなくなった場合に削除ができます。
Google スプレッドシートでの関数の定義
Google スプレッドシートでは、関数の定義方法が少し異なり設定する項目が増えます。
ここからは、Google スプレッドシートでの名前付き関数の保存の方法について見ていきます。
上部メニューの「データ」タブから、「名前付き関数」の項目を選択します。
画面右に名前付き関数のウィンドウが表示されますので、「新しい関数を追加」を選択します。
関数名を入力してから数式の定義を行いますが、数式の定義では最後に実行する引数も必要で、さらに引数名を入れた数式とします。サンプルでは「価格」になります。
そして、引数のプレースホルダに引数名を入力し、Enterキーでプレースホルダを設定します。
これにより、関数を使う際に引数を指定し、引数に値を引き渡して処理が実行されます。
設定ができましたら「次へ」を選択します。
作成した関数についてプレビューを確認し、問題なければ「作成」を選択して名前付き関数の作成完了となります。
後から編集などを行う際は、上部メニューの「データ」タブから「名前付き関数」の項目を選択して、表示されている名前付き関数の右にある三点アイコンから編集または削除などを行います。
あとはExcelと同じように数式バーに関数を入力し、引数を指定して処理を実行します。
引数が複数ある場合は少し注意が必要で、引数のプレースホルダの追加は数式の引数の順番に設定する必要があります。
引数のプレースホルダの順番は、追加後でもドラッグ&ドロップで変更することができます。
さいごに
これまで自分で関数を作成する場合は、Microsoft Officeのアプリケーションを操作するためのプログラミング言語のVBAのスキルが必要でありましたが、LAMBDA関数を使うことで、引数を設定して計算式を構築し、独自の関数として処理を実行することができます。
今回ご紹介したサンプルの他にも、FILTERやMAPといった関数を使って配列処理と組み合わせたりすることもできます。
処理式で様々な関数を使うことができれば、より柔軟なデータ処理が可能となります。
普段からよく使うような計算式は、LAMBDA関数を使って名前付き関数として保存しておくといいでしょう。
ぜひLAMBDA関数を活用してみてください。