「毎回同じ長い数式を組み直すのが面倒…」。複数のシートで同じ計算ロジックをコピペしていませんか。
数式が長くなるほど読みにくくなりますし、修正するときは使っている場所をすべて直す必要があります。
そんな悩みを解決するのが LAMBDA関数 です。よく使う計算ロジックに名前を付けて、自作の関数として使い回せるようになります。この記事ではExcel LAMBDA関数の使い方を実例付きで紹介します。基本の書き方から「名前の管理」への登録、MAP・REDUCEとの連携まで解説します。
この記事は次のような人におすすめ
- 同じ計算式を何度もコピペするのをやめたい
- VBAを使わずにオリジナルの関数を作りたい
- MAP関数やREDUCE関数との組み合わせ方を知りたい
LAMBDA関数とは?
LAMBDA(読み方: らむだ)関数は、独自の計算ロジックを関数として定義できる関数です。名前はプログラミング用語の「ラムダ式(無名関数)」からきています。
たとえば「税込価格を計算する関数」がすぐに作れます。「2つの値を特定ルールで結合する関数」なども定義できます。
LAMBDA関数にできることをまとめると、次のとおりです。
- 繰り返し使う計算ロジックを1つの関数にまとめる
- 「名前の管理」に登録すれば、SUM関数やIF関数と同じように呼び出せる
- MAP・REDUCE・BYROWなどと組み合わせて高度な配列処理ができる
- VBAを使わずに自作関数を作れる
対応バージョンはMicrosoft 365、Excel for the web、Excel 2024です。Excel 2021以前では使えません。
LAMBDA関数の書き方(構文と引数)
基本構文
=LAMBDA(引数名1, [引数名2, ...], 数式本体)(値1, [値2, ...])
LAMBDA関数は2つのパートに分かれています。定義部分の LAMBDA(...) と、値を渡す (値) です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 引数名1 | 必須 | 数式本体で使う変数の名前(好きな名前を付けられる) |
| 引数名2〜 | 省略可 | 2つ目以降の引数。最大253個まで |
| 数式本体 | 必須 | 引数名を使った計算式。必ず最後の引数として書く |
| (値1, 値2, …) | 必須 | 定義した引数に渡す実際の値やセル参照 |
引数名はセル参照(A1やB2)や関数名(SUMやIFなど)と被らなければ自由に付けられます。price や x など、わかりやすい名前にするのがおすすめです。
NOTE
LAMBDA関数の最後の引数が必ず「数式本体」になります。引数が1つなら
LAMBDA(x, x1.1)のように、xが引数名でx1.1が数式本体です。
LAMBDA関数の基本的な使い方
まずはセルに直接書いて動きを確認してみましょう。
税込価格を計算する
税抜き価格から税込価格を計算するLAMBDA関数です。
=LAMBDA(price, price*1.1)(A2)
price という引数名を定義し、price*1.1 で10%の消費税を加算しています。最後の (A2) でセルA2の値を渡しています。A2に「1000」が入っていれば、結果は「1100」です。
2つの引数を使う
姓と名をスペースでつなげてフルネーム表示する例です。
=LAMBDA(sei, mei, sei&" "&mei)(A2, B2)
A2に「田中」、B2に「太郎」が入っていれば「田中 太郎」を返します。引数名を2つ定義し、値も2つ渡しているのがポイントです。
セル内で単体テストする
LAMBDA関数はセルに直接書いてすぐに動作確認できます。
| 数式 | 結果 | 説明 |
|---|---|---|
=LAMBDA(x, x*2)(5) | 10 | 5を2倍 |
=LAMBDA(x, y, x+y)(3, 7) | 10 | 3+7 |
=LAMBDA(x, IF(x>=60,"合格","不合格"))(75) | 合格 | 条件分岐 |
=LAMBDA(txt, UPPER(txt))("hello") | HELLO | 文字列変換 |
セル内で動作を確認してから「名前の管理」に登録する、という流れがおすすめです。
「名前の管理」に登録する方法
LAMBDA関数の真価は「名前の管理」に登録したときに発揮されます。登録すれば、SUM関数やVLOOKUP関数と同じ感覚で呼び出せるようになります。
登録手順
- 「数式」タブ →「名前の管理」をクリックします
- 「新規作成」をクリックします
- 以下の項目を入力します
- 名前: 関数名(例:
TAX_INCL) - スコープ: ブック(デフォルトのまま)
- コメント: 「税抜価格から税込価格を計算」など機能説明
- 参照範囲:
=LAMBDA(price, ROUND(price*1.1,0))
- 「OK」をクリックして保存します
登録が完了すると、どのセルでも次のように呼び出せます。
=TAX_INCL(A2)
定義を1か所直すだけで、使っているすべてのセルに反映されます。税率が変わっても修正は1回で済むのが大きなメリットです。
NOTE
Excelの「名前の管理」で登録した関数は、オートコンプリート(入力候補)には表示されません。関数名を正確に入力する必要があるので、覚えやすい名前を付けておきましょう。Macの場合は「数式」タブ →「名前の定義」から登録できます。
LAMBDA関数の実務活用パターン
MAP関数と組み合わせて配列を一括変換する
MAP関数を使えば、配列の各値にLAMBDA関数を適用できます。
=MAP(A2:A10, LAMBDA(price, ROUND(price*1.1,0)))
A2:A10の全セルに対して税込計算を一括で適用します。結果はスピル(自動展開)で複数行に表示されるので、1つのセルに数式を入れるだけで完了です。
REDUCE関数と組み合わせて集約する
REDUCE関数は配列を1つの値にまとめる関数です。LAMBDAで集約のロジックを定義します。
=REDUCE(0, A2:A10, LAMBDA(acc, val, IF(val>=1000, acc+val, acc)))
この例では1,000以上の値だけを合計しています。SUMIFSでは書きにくい複雑な条件でも、LAMBDAの中身を自由に書けるので柔軟に対応できます。
BYROW関数と組み合わせて行ごとに処理する
BYROW関数は各行に対してLAMBDAを適用します。
=BYROW(A2:C10, LAMBDA(row, MAX(row)-MIN(row)))
各行の最大値と最小値の差(レンジ)を一括で計算できます。行単位の集計処理が1つの数式で完結するのが便利なポイントです。
MAKEARRAY関数で配列を生成する
MAKEARRAY関数はLAMBDAで計算した結果から配列を作ります。
=MAKEARRAY(9, 9, LAMBDA(r, c, r*c))
9行9列の九九の表を1つの数式で作れます。テスト用のダミーデータを用意したいときにも使えます。
よくあるエラーと対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
| #CALC! エラー | セル内でLAMBDAを定義したが値を渡していない | =LAMBDA(x, x*2) の末尾に (A2) を付けて値を渡す |
| #VALUE! エラー | 引数の数が定義と一致しない | 引数を2つ定義したなら値も2つ渡す |
| #VALUE! エラー | パラメータが253個を超えている | 引数は253個以内に収める |
| #NUM! エラー | 再帰呼び出しが深すぎる | 基底条件(IFなどで再帰を止める条件)を見直す |
| #NAME? エラー | 引数名にセル参照(A1等)を使っている | x、val、price などセル参照以外の名前にする |
| 数式本体が実行されない | 「名前の管理」に登録せずセル内で (値) を付け忘れた | =LAMBDA(x, x*2)(A2) と末尾に値を渡す |
エラー値の詳細はExcelのエラー値一覧も参考にしてください。エラーを非表示にしたい場合はIFERROR関数が便利です。
Googleスプレッドシートとの違い
GoogleスプレッドシートにもLAMBDA関数があります。構文は同じですが、登録方法に大きな違いがあります。
| 比較項目 | Excel | Googleスプレッドシート |
|---|---|---|
| LAMBDA関数の構文 | =LAMBDA(引数, 数式)(値) | =LAMBDA(引数, 数式)(値) |
| カスタム関数の登録 | 「名前の管理」(数式タブ) | 「名前付き関数」(データメニュー) |
| 登録時の引数説明 | 設定不可 | 引数ごとに説明文を設定可能 |
| オートコンプリート | 非対応 | 対応(関数名を入力すると候補表示) |
| 対応バージョン | Microsoft 365 / Excel for the web / Excel 2024 | 全アカウント |
| ヘルパー関数 | MAP, REDUCE, SCAN, BYROW, BYCOL, MAKEARRAY, ISOMITTED(7種) | 同じ7種類 |
構文自体は同じなので、数式をそのままコピーして使えます。ただし登録方法が異なるため、ブック間の移行では再登録が必要です。
カスタム関数の登録・管理のしやすさではGoogleスプレッドシートが有利です。GUIで登録でき、オートコンプリートにも対応しています。一方、ExcelはVBAとの連携や大規模データの処理速度に強みがあります。
まとめ
LAMBDA関数は、繰り返し使う計算ロジックをカスタム関数として定義できる関数です。
- 構文は
=LAMBDA(引数名, 数式本体)(値)で、最後の引数が数式本体 - 「名前の管理」に登録すると、SUM関数と同じように呼び出せる
- MAP・REDUCE・BYROW・MAKEARRAY等と組み合わせて配列処理が可能
- 引数名にはセル参照や関数名と被らない名前を使う
- 対応バージョンはMicrosoft 365、Excel for the web、Excel 2024
- Googleスプレッドシートにも同じ構文があるが、登録方法が異なる
まずは =LAMBDA(x, x*2)(5) でLAMBDA関数の動きを確認するところから始めてみてください。「名前の管理」への登録まで進めば、自作関数の便利さを実感できるはずです。
関連記事
関数一覧
Excel関数の一覧は下記の記事で確認できます。
エラー値が表示される場合は、下記の記事も参考にしてみてください。
