本ページには広告が含まれています。

LAMBDA 関数 VBAなしでカスタム関数を作成できる

LAMBDA関数 VBAなしでカスタム関数を作成できる

LAMBDA(ラムダ)関数は、Excelブック内でよく使う数式の設定をカスタム関数(ユーザー定義関数)として作成し、再利用できるようにする関数です。

LAMBDA(ラムダ)関数は、2022年2月8日に一般提供が開始されました。「Microsoft 365」の最新のExcelなら利用できるようになっています。提供が開始されたバージョンは次のとおりです。
Windows: 16.0.14729
Mac: 16.56 (ビルド 211211)
Web: 2022年3月18日導入 iOS: 2.56 (ビルド 211207) Android: 16.0.14729

スポンサーリンク

はじめに

くるみこ
くるみこ

LAMBDA 関数は、今のところサブスクリプション版の「Microsoft 365」アプリ「Excel for Microsoft 365」だけで使用できる関数です。基本的な使い方を紹介していきます。

カスタム関数を作れるってどういうことなんだろう? よろしくお願いしますm(__)m

【この記事でわかることは】
・RAMBDA(ラムダ)関数の使い方がわかります

これまでも、カスタム関数(ユーザー定義関数)はVBAなどで作成できましたが、LAMBDA関数が実装されたことでVBA無しで作成できるようになったということです。

LAMBDA 関数の構文を確認します

LAMBDA 関数入力時に表示される「数式オートコンプリート」から確認します。
※ 対応していないExcelバージョンでは「オートコンプリート」にこの関数は表示されません。

LAMBDA 関数の構文と引数

LAMBDA関数入力時のオートコンプリート

表示される引数の表示画像がこちらです。

LAMBDA関数の数式オートコンプリート

関数入力ダイアログの表示画像がこちらです。

LAMBDA関数入力ダイアログ

=LAMBDA(parameter_or_calculation, …)  「パラメーターまたは計算」って、よくわからないのでヘルプを表示して確認してみると
=LAMBDA([parameter1, parameter2, …], 計算) と記載されています。
でも、引数なども確認したうえで整理するとこんな感じでしょう。

【構文】

=LAMBDA ([変数名1, …, 変数名253,] 計算)
 ※[ ]内の引数は省略可能

引数もヘルプの情報から少し整理しました。

引数説明
変数名(n)
【省略可能】
「計算」で使用する変数名を指定します
最大253個の変数名を指定できます
変数名には関数に渡す値(セル参照、文字列、数値など)が代入されます
計算
【必須】
関数の結果として実行して返す数式を「変数名」を使って指定します
最後の引数でなければならず、結果を返す必要があります。
※「計算」で使われる「変数名」に代入する値はLAMBDA( )に続けて( )内で指定します

ヘルプ内に下の画像があったので引用しました。

LAMBDA関数ヘルプ内の流れをあらわす画像
※ LAMBDA関数のヘルプから引用

これは「LAMBDA関数」にパラメーターと計算をセットして「myLambda」という名前を付けて登録します。次に「myLambda」というカスタム関数(ユーザー定義関数)の引数(x,y) に(1,3)を代入しています。そして、その計算結果「4」が表示されるという流れを表している画像のようです。

LAMBDA 関数の使用例

それではいくつかの使用例を基本的なものから順番に見ていきましょう。

LAMBDA関数を知るための簡単な例

LAMBDA関数を使ってセルに表示

単価×数量=金額をLAMBDA関数を使ってセルに表示させてみた例です。

LAMBDA関数を使ってセルに表示

・C2セルは、(変数名1「単価」,変数名2「数量」,計算「単価*数量」)と漢字を使っています。
・C3セルでは、(変数名を「x,y,z」計算で「x*y*z」)として「z」で税込み金額にしています。

LAMBDA関数の)後に(変数への値代入)が無いと #CALC! エラーが表示されます。
計算結果の表示だけなら、わざわざLAMBDA関数を使う必要はないことがわかりますよね。
LAMBDA関数は、変数名と変数名を使った計算式を定義しているだけです。
LAMBDA関数の本当の使い方はこれからです。

ちなみに、セル範囲で値を代入すると当然次のように「スピル」します。

セル範囲で値を代入すると当然「スピル」する

VBAなしでカスタム関数(ユーザー定義関数)にする方法

LAMBDA関数の本当の使い方は、再利用可能なカスタム関数(ユーザー定義関数)を作成して利用することです。

カスタム関数として「名前」を設定する方法

まず設定開始前に、設定したいLAMBDA関数の数式をコピーしておきます。そうしないと、手動で入力することになります。

Excelのメニューの[数式]タブ > [定義された名前]リボン > [名前の定義] を選択します。

 [名前の定義] を選択する画像

すると、「新しい名前」設定用のダイアログが表示されます。

名前定義「新しい名前」ダイアログ

はじめに、C2セルのLAMBDA関数を次のように入力設定して[OK]ボタンで確定します。
これで「a_Amount」というカスタム関数(ユーザー定義関数)が設定できました。

新しい関数名の設定画像①

もう一つ、C3セルのLAMBDA関数も次のように入力設定して[OK]ボタンで確定します。
これで「a_TaxInAmount」というカスタム関数(ユーザー定義関数)を設定できました。
先ほどとの違いは、「変数名」が「x,y.z」とアルファベットだけになっている点です。

新しい関数名の設定画像②

設定した二つのカスタム関数の違いは、引数入力時のオートコンプリートの表示です。単なるアルファベットの場合では、引数に何を設定したらよいのかが非常に分かりにくくなってしまう点です。
セットすべき「引数」が何かがすぐにわかるように単語や文字列で設定しておくようにしましょう。

作成したカスタム関数を使ってみます
作成したカスタム関数の呼び出し画像で日本語の引数表示
関数オートコンプリートの引数表示

「変数名」は適切な「単語」などを設定したほうがわかりやすくなることがわかりました!

カスタム関数の「名前」設定について

カスタム関数の「名前」付け設定については、日本語で設定することも可能ですが、なるべく英小文字で設定することをおすすめします。
その理由は、関数名のオートコンプリートにうまく表示させるためです。次の画像をご覧ください。

関数入力時のオートコンプリート状況
オートコンプリートとは、セルに「=a」 と入力した際に関数一覧がリストアップされる機能です。

「名前」の付け方は自由ですが、ご覧のように「a_」などとしておけば昇順で並べて表示されたときに、上の位置に表示されように名前を付ければ探しやすくなります。是非工夫してみてください。

ちなみに、漢字やひらがなで設定した場合はオートコンプリートに表示されません!

複雑な式もLAMBDA関数で簡略できます

一例として、みんな大好きな「VLOOKUP関数」をLAMBDA関数に移植してみます。

「VLOOKUP関数」を使うときに必ずと言っていいほど「IFERROR関数」を一緒に使うのではないでしょうか。LAMBDA関数を使えば、これをまとめてしまうことが可能です。

VLOOKUP+IFERRORをLAMBDA関数で合体させる

VLOOKUP関数+IFERROR関数の式がこちらです。
=IFERROR(VLOOKUP(検索値,範囲,列番号,検索表方法),””))

LAMBDA関数に組み込むとこんな感じになります。赤字が「変数」青字が「計算」
=LAMBDA(検索値,範囲,列番号,[検索表方法],IFERROR(VLOOKUP(検索値,範囲,列番号,検索表方法),””))

式が長くなったので少し見にくいですが、下の画像をご覧ください。

作成した「a_VLOOKUP」を使ってみた
「名前」を「a_VLOOKUP」に設定します
「名前」を「a_VLOOKUP」に設定します
作成した「a_VLOOKUP」を使ってみます

LAMBDA関数を使ったおかげで、こんなに式が短くなりました(^^)/

カスタム関数なら引数がスッキリしてわかりやすい

いかがですか?
こんな感じで LAMBDA関数 を使えば、いつも使っている関数の入力が楽になりそうな感じですよね。まだまだいろいろと使えそうですので是非試してみてください(^^♪

さらにLAMBDA関数を活用するには

ヘルパー関数を活用する

LAMBDA関数を引数として利用できる「ヘルパー関数」が提供されています。

ヘルプからそのまま引用してリンクを設定しておきます。

MAP 関数LAMBDA を適用して新しい値を作成することにより、
配列内の各値を新しい値にマッピングして形成された配列を返します
REDUCE 関数各値に LAMBDA を適用し、アキュムレーターに合計値を返すことで
配列を累積値に減らします
SCAN 関数LAMBDA を各値に適用して配列をスキャンし、
各中間値を持つ配列を返します
MAKEARRAY 関数LAMBDA を適用して、
指定された行と列のサイズの計算された配列を返します
BYROW 関数LAMBDA を各行に適用し、結果の配列を返します
たとえば、元の配列が3列x2行の場合、返される配列は1列x2行です
BYCOL 関数LAMBDA を各列に適用し、結果の配列を返します
たとえば、元の配列が3列x2行の場合、返される配列は3列x1行です
ISOMITTED 関数LAMBDAの値がないかどうかを確認し、
TRUE または FALSE を返します

これらの「ヘルパー関数」を活用すれば、条件に合致するセルだけを集計したり、加工して新しいリストを作り出すことなども可能になるようです。

それぞれの詳しい内容についてはまだ把握できていないので、ヘルプへのリンクをつけていますので参照してみてください。別途情報を更新したいと思います。

まとめ(おわりに)

以上、LAMBDA 関数 について、使用例を使って解説しました。

くるみこ
くるみこ

LAMBDA 関数で「よく使う関数の組み合わせ」や「複雑な引数をわかりやすく」などのためにも利用することができますね。指定方法をしっかり覚えて練習しておきましょう。

「VLOOKUPとIFERROR」の合体はすごく効率化できて便利ですね。ほかにも
いろいろな設定を考えながら試してみま~す(^^♪

「名前定義」についてはこの記事で解説しています。

★★★ ブログランキング参加中! クリックしてね(^^)/ ★★★

【今後の記事について】

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
「汎用でだれでも使えて活用できるように考えてる」というポリシーで、記事を継続して書いていきたいと思っています。どうぞよろしくお願いしますm(_ _)m

スポンサーリンク
スポンサーリンク

過去記事のサンプルファイルをダウンロードできます

この記事で使用したサンプルの登録はありません。
過去の記事で使用したサンプルファイルをダウンロードできるようにページを設置していますので、こちら(このリンク先)からご利用ください