概要
「毎回同じ IFERROR を書くのが面倒」
「安全な割り算、安全な VLOOKUP、安全な平均…全部ひとつの“関数”として再利用したい」
「複雑な処理を“自作関数”として登録して、どのシートでも使いたい」
そんな願いを叶えるのが LAMBDA 関数です。
LAMBDA を使うと、
Excel の中に“自分専用の関数”を作れる ようになります。
しかも、
- エラー回避ロジックを関数の中に閉じ込める
- 何度でも再利用できる
- 名前を付けて関数として呼び出せる
という、まさに“安全関数の再利用”に最適な仕組みです。
LAMBDA の基本
LAMBDA の書式
=LAMBDA(引数1, 引数2, …, 計算式)
LAMBDA は「引数(入力)」と「計算式(出力)」をセットにして
“関数そのもの”を作る仕組みです。
例:2つの数を足す関数
=LAMBDA(a, b, a + b)
これだけで「a と b を足す関数」が作れます。
ただし、このままでは“関数として登録”されていないので、
名前の管理(名前の定義)に登録して初めて
普通の関数のように使えるようになります。
再利用可能な「安全割り算関数」を作る
分母が 0 のときエラーにしない割り算
普通の割り算:
=A2 / B2
B2 が 0 だと #DIV/0! になります。
これを「安全割り算」として関数化します。
1. LAMBDA を作る
=LAMBDA(x, y, IF(y=0, NA(), x/y))
意味:
- x … 分子
- y … 分母
- y が 0 のときは NA()
- それ以外は x/y
2. 名前を付けて登録する
- 数式タブ → 名前の管理
- 新規作成
- 名前:
SAFE_DIV - 参照範囲に上の LAMBDA を貼り付け
- OK
3. 関数として使う
=SAFE_DIV(A2, B2)
これで、
どのシートでも使える“安全割り算関数” が完成します。
再利用可能な「安全 VLOOKUP 関数」を作る
VLOOKUP のエラーを 0 にしたい場合
普通の VLOOKUP:
=VLOOKUP(A2, マスタ!A:D, 2, FALSE)
検索失敗で #N/A になります。
これを「安全 VLOOKUP」として関数化します。
LAMBDA の形
=LAMBDA(key, range, col, IFERROR(VLOOKUP(key, range, col, FALSE), 0))
名前を SAFE_VLOOKUP として登録すれば、
=SAFE_VLOOKUP(A2, マスタ!A:D, 2)
と書くだけで、
エラーを自動で 0 に変換する VLOOKUP が使えるようになります。
再利用可能な「安全平均関数」を作る
エラーを除外して平均を取りたい
普通の AVERAGE はエラーがあると計算できません。
そこで、
「エラーを除外して平均を取る関数」を作ります。
LAMBDA の形
=LAMBDA(rng, AVERAGE(FILTER(rng, NOT(ISERROR(rng)))))
名前を SAFE_AVG として登録すれば、
=SAFE_AVG(A2:A20)
で、
正常値だけの平均 が取れます。
LAMBDA を使うときのポイント
1. LAMBDA は“名前の定義”に登録して初めて関数になる
セルに直接書いても動きません。
必ず「名前の管理」から登録します。
2. 引数の数は自由に決められる
1つでも、2つでも、10個でも OK。
3. LET と組み合わせるとさらに強力
LAMBDA の中で LET を使うと、
複雑な処理を“読みやすく分解”できます。
例:
=LAMBDA(x, y,
LET(
分母, y,
分子, x,
安全分母, IF(分母=0, NA(), 分母),
分子 / 安全分母
)
)
例題
問題1
分母が 0 のとき NA() を返し、
それ以外は x/y を返す「安全割り算関数」を LAMBDA で作りたい。
LAMBDA の式を書いてください。
=LAMBDA(x, y, IF(y=0, NA(), x/y))
問題2
VLOOKUP の検索失敗を 0 に変換する「安全 VLOOKUP 関数」を作りたい。
key(検索値)、range(範囲)、col(列番号)を引数にした LAMBDA を書いてください。
=LAMBDA(key, range, col, IFERROR(VLOOKUP(key, range, col, FALSE), 0))
問題3
範囲 rng の中からエラーを除外し、正常値だけで平均を取る関数を作りたい。
LAMBDA の式を書いてください。
=LAMBDA(rng, AVERAGE(FILTER(rng, NOT(ISERROR(rng)))))
問題4
A2 の値を 1.1 倍し、エラーなら 0 を返す関数を LAMBDA で作りたい。
引数は x とし、LAMBDA の式を書いてください。
=LAMBDA(x, IFERROR(x*1.1, 0))
問題5
x と y を受け取り、
「x+y」「x−y」「x*y」をまとめて返す関数を LAMBDA で作りたい。
(返り値は HSTACK を使うものとする)
=LAMBDA(x, y, HSTACK(x+y, x-y, x*y))
まとめ
「再利用可能な安全関数 → LAMBDA」のポイントは、
- エラー回避ロジックを関数の中に閉じ込める
- 名前を付けて登録すれば、どのシートでも使える
- IFERROR・分母チェック・FILTER などを組み合わせて“安全関数”を作れる
- 複雑な処理を“自作関数”として再利用できる
というところにあります。
まずはこの型を覚えておくと便利です。
=LAMBDA(引数…, 安全処理を含む計算式)
Excel を“自分専用の関数が作れるプログラミング環境”として使えるようになると、
作業効率が一気に変わります。
ぜひ LAMBDA を使って、あなた専用の「安全関数ライブラリ」を作ってみてください。
