![](https://blogimg.goo.ne.jp/user_image/06/57/3d7f1eccb0fc3f6a04779f327058f128.png)
ひろがるスカイ!プリキュア (左から順に)
キュアウィング
キュアスカイ
キュアプリズム
「Excel for Microsoft365」にて、新しく「LAMBDA関数」(LAMBDA/読み方:ラムダ)が追加されました。Excelには、SUM関数やAVERAGE関数などの既存の関数がありますが、これらと同等の関数を自作して、繰り返し使用することができます。作成した関数は、ブック全体で使用できます。本記事では、「LAMBDA関数」の使用方法を紹介いたします。
1.LAMBDA関数の構文
LAMBDA関数の構文は以下の通りです。
=LAMBDA([パラメーター1, パラメーター2, …,] 計算)
・パラメーター
セル参照、文字列、数値など、作成したLAMBDA関数に渡す値を指定します。任意の文字列を設定し、この値が変数となり下記「計算」に使用されます。最大で253個のパラメーターを入力できます。 この引数は省略(なしにすることも)可能です。
・計算
関数の結果として実行して返す数式です。この引数は必須で、必ず引数の最後に指定します。
例えば、=LAMBDA(●, ▲, ■, ★) という数式を作成した場合は、●,▲,■ の各パラメーターを用いた計算式を★に記述して、★の計算結果をセルに表示する、という処理が行われます。括弧内の最後の1つがセルに表示される計算式となり、それ以外がその計算に必要なパラメーターとなります。Excelシート上でLAMBDA関数を入力すると、次のように表示されます。
![](https://blogimg.goo.ne.jp/user_image/16/86/4623cd522b9f250f87244bb7320a235b.png)
2.LAMBDA関数を使用しない場合
例として、このようなシートがあるとします。
![](https://blogimg.goo.ne.jp/user_image/64/33/c784b878539bbf494035174022d4b640.png)
関数を作成して、長さの単位インチ(inch)の値を、その右隣のセルにセンチメートル(cm)に変換して表示するとします。尚、1inchは2.54cmであることから、inchの値を2.54倍すればcmに変換することができます。
B3セルのinchの値をcmに変換してC3セルに表示する場合は、カーソルをC3セルに合わせてから、数式バーに「=B3*2.54」と入力します。
![](https://blogimg.goo.ne.jp/user_image/33/e5/ff497d1a693c156a686d0b3741ae00d5.png)
C3セルには「2.54」と表示されました。
![](https://blogimg.goo.ne.jp/user_image/5d/be/9347825c079067bdb78022188d6240b9.png)
この方法は、同じ数式を他のセルにも使用したい場合に、数式が煩雑ならば入力ミスが発生しやすい面があります。
3.LAMBDA関数の例1
先述した「2.LAMBDA関数を使用しない場合」と同じシートを用いて、inchをcmに変換します。今度は、LAMBDA関数を用いて変換します。
cmの値を求めるには、inchの値によってその値が決まることから、cmの値をパラメーターとしたLAMBDA関数を作成します。B3セルのinchの値をcmに変換してC3セルに表示するには、カーソルをC3セルに合わせてから、数式バーに次のように入力します。
=LAMBDA(inch, inch * 2.54)(B3)
inchの値を受けるパラメーターを「inch」としました。(別の名称にしてもよいです。)LAMBDA関数では、B3セルの値が inch に渡されて、inch * 2.54 の計算結果をC3セルに表示します。
![](https://blogimg.goo.ne.jp/user_image/73/c9/a564b098e004a6e2c232224e9c0239fc.png)
![](https://blogimg.goo.ne.jp/user_image/30/a5/fd24cf1988653cd9bd496bfc00420253.png)
数式を入力すると、C3セルには「2.54」と表示されました。
![](https://blogimg.goo.ne.jp/user_image/24/b2/f61b806a2c9b238b8e5cc1a78aef65fc.png)
LAMBDA関数は「名前の定義」とともに使用することにより、繰り返し使用可能な関数を定義することができます(参考記事:Excel 名前の定義)。この関数に「cm変換」という名前を定義するとします。
メニューバーの[数式]-[名前の定義]を選択して[新しい名前]を表示します。
![](https://blogimg.goo.ne.jp/user_image/0b/48/a4e8963499e2debb1a44f9cd4c1f0eed.png)
[名前]に「cm変換」と入力します。
[参照範囲]に「=LAMBDA(inch, inch * 2.54)」(LAMBDA関数の閉じ括弧まで)と入力します。
[OK]ボタンで確定します。
![](https://blogimg.goo.ne.jp/user_image/50/11/c0738c1a8679149c19de220909762640.png)
これにより、「cm変換」という関数が定義されました。この「cm変換」を使用して、2inchをcmに変換した値をC4セルに表示します。カーソルをC4セルに合わせてから、数式バーに「=cm変換(B4)」と入力します。
![](https://blogimg.goo.ne.jp/user_image/42/71/9ddbed712c9e61601032e890225715e2.png)
C4セルには「5.08」と表示されました。
![](https://blogimg.goo.ne.jp/user_image/16/d1/3395fda556314558491c36a8b56023fc.png)
定義した関数「cm変換」は、パラメーターが1つ(inch)必要な関数として定義しました。そのため、この関数を呼び出すときに、パラメーターの個数が1つではない場合は、エラーになります。
![](https://blogimg.goo.ne.jp/user_image/3e/0f/86bee7bd3eb015c3579346257e16b747.png)
![](https://blogimg.goo.ne.jp/user_image/1a/df/a74091bfbcad98af348e5355ed2e6683.png)
また、内部では数値計算を行っているため、パラメーターに数値でない(数値と認識されない)値を指定してもエラーになります。
![](https://blogimg.goo.ne.jp/user_image/1d/7a/b6b18a973096f90539186ad416502774.png)
![](https://blogimg.goo.ne.jp/user_image/64/36/4066db10f1d72b67c5a249ef789165b8.png)
LAMBDA関数を基にして定義した関数は、SUM関数などと同様の操作感で使用できます。また、関数を定義することにより、数式部分が「cm変換」のような簡素な見た目となります。同じ数式を他のセルにも使用したい場合に、中身の数式が煩雑でも「cm変換」と入力すればよいため、入力ミスを抑える効果があります。
4.LAMBDA関数の例2
例として、このようなシートがあるとします。
![](https://blogimg.goo.ne.jp/user_image/6d/08/eb2b2cc4398e0de94ab7ef46c6d8ebcb.png)
関数を作成して、税抜価格(円)と税率(%)に応じて、税込価格(円)を表示するとします。税込価格は、税抜価格と税率の2つの値によってその値が決まります。このことから、これら2つの値をパラメーターとしたLAMBDA関数を作成します。
ドーナツをテイクアウトするときの税込価格(税率8%)をD5セルに表示するには、カーソルをD5セルに合わせてから、数式バーに次のように入力します。
=LAMBDA(税抜価格, 税率, ROUNDDOWN(税抜価格 * (100+税率)/100, 0))(C5, 8)
税抜価格と税率の値を受けるパラメーターをそれぞれ「税抜価格」,「税率」としました。(別の名称にしてもよいです。)LAMBDA関数では、C5セルの値,8(定数値)がそれぞれ 税抜価格,税率 に渡されて、ROUNDDOWN(税抜価格 * (100+税率)/100, 0) の値をD5セルに表示します。尚、税額は1円未満切り捨てとなることから、ROUNDDOWN関数を用いて「ROUNDDOWN(x,0)」のようにして1未満の値を切り捨てます。(FLOOR関数を用いて「FLOOR(x,1)」のようにしても切り捨てできます。)
![](https://blogimg.goo.ne.jp/user_image/5a/e2/ee5999081ac6ff424636d27467d4a1d9.png)
![](https://blogimg.goo.ne.jp/user_image/74/ba/04d435a215762df8a83923f8f7008368.png)
数式を入力すると、D5セルには「151」と表示されました。
![](https://blogimg.goo.ne.jp/user_image/7f/96/07b8578750cbeac8388c7a453b6c96a7.png)
この関数に「税込価格」という名前を定義するとします。先述した「3.LAMBDA関数の例1」と同様に、メニューバーの[数式]-[名前の定義]を選択して[新しい名前]を表示します。
[名前]に「税込価格」と入力します。
[参照範囲]に「=LAMBDA(税抜価格, 税率, ROUNDDOWN(税抜価格 * (100+税率)/100, 0))」と入力します。
[OK]ボタンで確定します。
![](https://blogimg.goo.ne.jp/user_image/26/a0/6946665a54044286c13a488b0bfe929c.png)
これにより、「税込価格」という関数が定義されました。この「税込価格」を使用して、ドーナツをイートインするときの税込価格(税率10%)をE5セルに表示します。カーソルをE5セルに合わせてから、数式バーに「=税込価格(C5, 10)」と入力します。
![](https://blogimg.goo.ne.jp/user_image/19/65/d44063d6375c0310c6e9c0f035b1f0f5.png)
E5セルには「154」と表示されました。
![](https://blogimg.goo.ne.jp/user_image/35/16/e37e55177bb7f470baf30363e0c0f4e8.png)
5.LAMBDA関数 範囲を渡す
LAMBDA関数のパラメーターには、次のようにセルの範囲を渡すこともできます。
例.
=LAMBDA(金額,SUM(金額))(C3:C5)
C3~C5セルの各値がパラメーター「金額」に渡されて、SUM関数によりこれらの合計値が表示されます。
![](https://blogimg.goo.ne.jp/user_image/05/fa/e8eac06b679be3b8a11a97fcd1daf220.png)
![](https://blogimg.goo.ne.jp/user_image/06/72/54bed3eeb9619674900636293f28aaca.png)
6.LAMBDA関数 パラメーターなし
通常は使用することがないと思われますが、次のようにパラメーターをなしにしてLAMBDA関数を作成することもできます。
例.
=LAMBDA(7)()
![](https://blogimg.goo.ne.jp/user_image/71/1c/bd876072f50adb3302488b53a291ad9e.png)
固定で7が表示されます。
![](https://blogimg.goo.ne.jp/user_image/63/4d/74a6323142720c80963aa4653afdc3e0.png)
7.LAMBDA関数 再帰呼び出し
LAMBDA関数は、再帰呼び出しができる仕様です。再帰呼び出しとは、ある関数が、その処理内で自身の関数を呼び出す手法のことです。
例として、文字列全体で初めて30文字以上になるまで、任意の文字列の右側に「プリキュア」の文字列を付加し続ける関数を、LAMBDA関数の再帰呼び出しを用いて作成するとします。作成した文字列をC2セルに表示し、C2セルの文字数をC4セルに表示するようにします。これを実現するにはREPT関数(指定文字列を指定回数分繰り返す関数)などを用いる方がより適切と思われますが、ここでは再帰呼び出しを行う例として紹介いたします。
![](https://blogimg.goo.ne.jp/user_image/7c/e3/c08ebf8e43803a60a17f8c5729c7a3cf.png)
この関数に「ADDPRECURE」という名前を定義するとします。先述した「3.LAMBDA関数の例1」と同様に、メニューバーの[数式]-[名前の定義]を選択して[新しい名前]を表示します。
[名前]に「ADDPRECURE」と入力します。
[参照範囲]に「=LAMBDA(value, IF(LEN(value)>=30, value, ADDPRECURE(value & "プリキュア")))」と入力します。
[OK]ボタンで確定します。
![](https://blogimg.goo.ne.jp/user_image/1a/9c/d395d471581bd126bb8df5c17feea880.png)
これにより、「ADDPRECURE」という関数が定義されました。
任意の文字列を受けるパラメーターを value としました。(別の名称にしてもよいです。)LEN関数は、文字列の文字数を返す関数です。valueの文字数を測定して、もしその文字数が30文字以上ならば、その値を返します。そうでなければ(30文字未満ならば)、valueの右側に「プリキュア」を付加した文字列を作成して再び ADDPRECURE を呼び出します(再帰呼び出し)。文字列が30文字以上になるまで、文字列の右側に「プリキュア」を付加して ADDPRECURE を呼び続けます。
![](https://blogimg.goo.ne.jp/user_image/1a/9b/ed25ac910ae00a34b8a448469b534cbd.png)
カーソルをC2セルに合わせてから、数式バーに「=ADDPRECURE(B2)」と入力します。
![](https://blogimg.goo.ne.jp/user_image/3f/c6/e1d132f65443bd4341068d5b9be91dbe.png)
C2セルには「プリキュア」を付加した文字列が表示され、文字列全体で31文字となりました。
![](https://blogimg.goo.ne.jp/user_image/15/94/92ef145a75085bbef9cc47e4e8432e26.png)
8.LAMBDA関数の数式を他バージョンのExcelで参照すると...?
ある1つのExcelファイルを、複数のメンバー(コンピュータ)で編集することがあると思います。例えば、Aさんが「Excel for Microsoft365」にてLAMBDA関数の数式を作成して、Excelファイルを保存します。Bさんのコンピュータには「Excel for Microsoft365」がインストールされておらず、「Excel 2019」(LAMBDA関数未対応)がインストールされており、Aさんが保存したExcelファイルを編集します。このように、LAMBDA関数の数式を含むExcelファイルを、「Excel 2019」などのLAMBDA関数未対応のExcelで編集する場面は、実際に起こり得ると思います。
「Excel for Microsoft365」で作成したLAMBDA関数の数式が、「Excel 2019」ではどのように表示されるのかを検証しました。先述した「3.LAMBDA関数の例1」で作成した数式を比較します。
「Excel for Microsoft365」で作成した数式です。
![](https://blogimg.goo.ne.jp/user_image/61/75/920764248e3713eb453582433ae55d20.png)
![](https://blogimg.goo.ne.jp/user_image/57/a6/d4c0d05c65ce36d11f5b3ff98b965509.png)
「Excel 2019」では、これらの数式はそれぞれ次のように表示されます。
![](https://blogimg.goo.ne.jp/user_image/15/71/8143e3982a27b0fce8cac39dbec05221.png)
![](https://blogimg.goo.ne.jp/user_image/68/3a/b3592c91dd3e7b70beac31f5672556fe.png)
数式の表示に相違が生じているものの、「Excel 2019」でも計算結果(2.54,5.08)が正しく表示されます。
![](https://blogimg.goo.ne.jp/user_image/1b/63/be002ad7d22d9abfeab6b699a789ed71.png)
但し、「Excel 2019」にてこの数式を編集するとエラーが発生し、計算結果が表示されなくなります。
![](https://blogimg.goo.ne.jp/user_image/67/d1/f1388fd5352321635060f29bc940a626.png)
「Excel 2019」にて、LAMBDA関数の数式を変更しないように編集したり、そのExcelファイルを保存したりするのは、問題ありません。
9.まとめ
本記事では、Excelの「LAMBDA関数」を紹介いたしました。LAMBDA関数は、自作した数式が煩雑になっても簡素な形にまとめることができ、繰り返し使用できることが強みだと思います。現時点では、「Excel for Microsoft365」のみの機能のため、使用できる環境は限定的です。今後、他バージョンのExcelにもLAMBDA関数が実装されることに期待したいです。
出典
Microsoftサポート LAMBDA関数