uniface.hub

uniface.hub

ユニフェイスの開発者ブログ


Title 【Excel】LAMBDA 関数の使い方
  • 2023年3月13日
  • 上村晃史
【Excel】LAMBDA 関数の使い方

はじめに

こんにちは、ユニフェイスの上村です!
これまでボリューミーな内容の記事が多かったですが、今回は比較的ライトな内容です!

Microsoft Office 365 を利用していると、いつの間にかバージョンアップされていて、それに伴い Excel 関数も知らない間に追加されていたりしますが、その中でも使いどころや使い方がイマイチ分からなかった、これまでのものと比べても異色の「LAMBDA」関数について紹介しようと思います。

LAMBDA 関数とは?

一言で説明すると「関数を自作できる関数」です ※ Office 365 バージョンでのみ利用できます。

これまでも VBA を利用すれば自作関数を作成できましたが、こちらはなんと VBA を使わなくても実装できます!
⇒ これにより Excel ファイルを、何かと扱いづらいマクロ付きブック(拡張子:.xlsm)形式にする必要がなくなります。

LAMBDA 関数の使い方

LAMBDA 関数についてアレコレ説明するよりは、使い方を見た方がイメージし易いと思いますので実践していこうと思います。

自分が普段よく使うのがシート名を取得して、先頭にタイトルとして表示する関数ですが、普通に書くと以下の内容になります。

【例】[Sheet1] シート上でシート名を取得する場合:

=RIGHT(CELL("filename", Sheet1!A1), LEN(CELL("filename", Sheet1!A1)) - FIND("]", CELL("filename", Sheet1!A1)))
// ※ 「Sheet1!」の箇所は普段は省略しますが、分かり易さのためにあえて明示

上記関数の中身についてまでは触れませんが、よく使用するため、いつになったら関数化されるのかなぁと思っていました。
ただ自分で関数が作れるようになったので、上記をLAMBDA関数を使って関数化します。

上記の関数を各シートで使用する場合、それぞれのシートで書き換える必要があるのは「Sheet1!A1」の箇所となります。また、同じ記述が3回登場しています。

これを LAMBDA 関数の第一引数に別名で定義して置き換えます。(「Sheet1!A1」を「target_cell」という名称に置換)
第二引数には置換後の上記関数を記載します。

=LAMBDA(target_cell, RIGHT(CELL("filename", target_cell), LEN(CELL("filename", target_cell)) - FIND("]", CELL("filename", target_cell)))

これで関数化が完了です! 次はこの新しく作成した関数に名前を付けます。
先ずは、[数式] タブ ->「名前の管理」 を選択します。

次に「名前の管理」画面から「新規作成」を選択します。

下記のように「名前」欄に独自の名前を付けて「参照範囲」に先ほど新たに作成した関数を記載し、「OK」を選択します。
(自分だけが使うとは限らない場合、自作されたものと判断できるように、例では名前の先頭に「自作LAMBDA_」と付けています。)

そうすると下記のように関数が追加され、普段利用する Excel 関数と同じように利用できます。

こんな感じで使えます。

さいごに

Excel に色々と手を加え始めると、ちょっとしたことで関数の記述量が多くなってしまい、メンテナンスがし辛くなってしまうことがあります。
同じような関数を複数個所で利用するけど、変更箇所はごく一部なのになぁといった場合には、この関数を利用すると読みやすくなり、修正ミスによるバグも減ってメンテナンスし易くなると思いますので、ぜひ試してみて下さい!