LAMBDA関数でExcelにカスタム関数を定義する|引数設計・名前マネージャー登録・BYROW連携の実務パターンとMOS Excel試験対策

「社内独自の消費税計算・評価ランク判定・工数チェックロジックを、何度も同じ数式でコピーして使っている」という経験はないでしょうか。LAMBDA関数を使えば、そうした繰り返し計算を自分だけのカスタム関数として定義し、ブック全体で呼び出せるようになります。

LAMBDAはMicrosoft 365およびExcel 2021以降で使える関数で、引数を持つ独自の計算ロジックに名前を付けて登録できます。登録後は=消費税計算(A2)のように普通の関数と同じ書き方で呼び出せるため、数式の再利用性と保守性が一気に高まります。BYROW・BCOLなどの高階関数と組み合わせると、行ごと・列ごとにカスタム関数を適用する処理も1本の数式で書けます。

本記事では、LAMBDA関数の基本構文・名前マネージャーへの登録手順・実務シナリオ別パターン・BYROW/BCOLとの連携・LETとの組み合わせ・よくあるエラーと対処法・MOS Excel試験対策まで体系的に解説します。

目次

LAMBDA関数の基本構文

LAMBDAの構文は次の通りです。

=LAMBDA([引数1, 引数2, ...], 計算式)
部分説明省略
引数(パラメータ)関数に渡す値の「名前」を定義する。呼び出し時に実際の値を渡す省略可(引数なし関数も作れる)
計算式引数名を使った計算ロジック。ここが関数の戻り値になる必須

最もシンプルな例:税込み金額を計算するLAMBDA(セルに直接入力して即時呼び出しするパターン)

=LAMBDA(price, price * 1.1)(A2)

上の式は「priceという引数を受け取り、price × 1.1を返す無名関数」を定義し、すぐ後ろの(A2)で引数にA2を渡して呼び出しています。これは動作確認用の書き方で、実際の業務では名前マネージャーに登録してから使うのが基本です。

名前マネージャーへの登録手順

LAMBDAを「自作関数」として使うには、名前マネージャーに登録します。登録すると=関数名(引数)の形でセルから呼び出せます。

  1. 数式タブ → 名前マネージャー(または Ctrl+F3)を開く
  2. 新規作成」をクリックする
  3. 名前」欄に関数名を入力する(例:税込み計算
  4. 参照範囲」欄に LAMBDA 数式を入力する:=LAMBDA(price, price * 1.1)
  5. OK」→「閉じる」で登録完了

登録後は任意のセルで=税込み計算(A2)と入力すると、A2の値に1.1を掛けた結果が返ります。数式オートコンプリート(サジェスト)にも関数名が表示されるため、他の組み込み関数と同じ感覚で使えます。

注意点:LAMBDA登録はブック(.xlsx / .xlsm)単位です。他のブックで同じ関数を使うには、そのブックでも名前マネージャーに登録するか、元のブックからコピーする必要があります。

実務シナリオ別パターン

シナリオ1:評価ランク判定を1つの関数に集約する

IF入れ子で書いていた評価ランク(S/A/B/C)判定を、LAMBDAで関数化します。

名前マネージャーに登録する数式(関数名:評価ランク):

=LAMBDA(score,
  IF(score >= 90, "S",
    IF(score >= 75, "A",
      IF(score >= 60, "B", "C")
    )
  )
)

呼び出し

=評価ランク(B2)

評価基準(90点以上がS等)が変わった場合、名前マネージャーの数式を1か所変更するだけで、ブック内のすべての=評価ランク()に反映されます。IF入れ子を複数セルにコピーしていた場合に比べて、修正漏れが起きません。

シナリオ2:複数引数を持つカスタム関数(工数単価計算)

時間数・時給・交通費の3引数を受け取り、請求金額を返す関数です。

名前マネージャーに登録(関数名:請求金額):

=LAMBDA(hours, rate, travel,
  CEILING(hours * rate, 100) + travel
)

呼び出し(A列:時間数、B列:時給、C列:交通費):

=請求金額(A2, B2, C2)

CEILINGで100円単位に切り上げるロジックも関数内にカプセル化されているため、呼び出す側のセルには単純な3引数の呼び出しだけ残ります。請求ルール変更(端数処理の単位変更等)も登録数式の変更だけで対応できます。

シナリオ3:再帰呼び出しで階乗を計算する

LAMBDAは自身を再帰的に呼び出すことができます。再帰には名前マネージャーに登録した関数名で自分自身を参照する技法を使います。

名前マネージャーに登録(関数名:階乗):

=LAMBDA(n,
  IF(n <= 1, 1, n * 階乗(n - 1))
)

呼び出し

=階乗(5)  ' 結果: 120

再帰は「関数が自分自身を呼び出す」仕組みです。n=5のとき5 × 階乗(4)5 × 4 × 階乗(3)→…と展開され、n=1で1を返して終わります。ツリー構造の走査や数列の生成で応用できます。

シナリオ4:引数なしLAMBDAで動的な定数を管理する

LAMBDAに引数を定義せず、「計算結果」だけを返す関数も作れます。ブック全体で参照する定数を一元管理するときに便利です。

名前マネージャーに登録(関数名:消費税率):

=LAMBDA(0.1)

呼び出し

=A2 * (1 + 消費税率())

税率が変わったとき、名前マネージャーのLAMBDA(0.1)の数値を変えるだけでブック全体に反映されます。名前付きセルに定数を入れるよりLAMBDAで定義する方が、後から見たときに「これは定数だ」と意図が伝わりやすくなります。

BYROW・BYCOL関数との連携

BYROW関数とBYCOL関数は、配列の各行または各列にLAMBDAを適用する高階関数です。

関数構文用途
BYROW=BYROW(配列, LAMBDA(行, 計算式))各行に同じ計算を適用し、行ごとの結果を縦に返す
BYCOL=BYCOL(配列, LAMBDA(列, 計算式))各列に同じ計算を適用し、列ごとの結果を横に返す

BYROW活用例:行ごとの最大値と平均値の差を一括計算

=BYROW(B2:E10, LAMBDA(row, MAX(row) - AVERAGE(row)))

B2:E10の各行(B列~E列の値)について「最大値 − 平均値」を計算し、9行分の結果を縦に並べて返します。同じ計算をセルごとにコピーする代わりに、1本の数式で全行を処理できます。

BYCOL活用例:列ごとの標準偏差を一括算出

=BYCOL(B2:E10, LAMBDA(col, STDEV(col)))

B列~E列それぞれのSTDEV(標準偏差)を4つ横並びで返します。品質管理・アンケート分析・テスト結果の列別ばらつき確認に使えます。

登録済みLAMBDAをBYROWに渡す

前述の「評価ランク」関数をBYROWで全行に一括適用するパターンです。

=BYROW(B2:B100, 評価ランク)

BYROWの第2引数に登録済みLAMBDA名を直接渡すと、各行の値を引数として評価ランク関数を呼び出します。100行分の評価が1セルにスピルされ、列への数式コピーが不要になります。

LETとの組み合わせで可読性と再利用性を両立する

LAMBDAの中でLETを使うと、複雑なロジックをカスタム関数として整理しながら、計算式の中の中間値にも名前を付けられます。

' 名前マネージャーに登録(関数名:勤務時間給与)
=LAMBDA(hours, rate, holiday_flag,
  LET(
    base,        hours * rate,
    holiday_add, IF(holiday_flag = 1, base * 0.35, 0),
    base + holiday_add
  )
)

引数(hours・rate・holiday_flag)はLAMBDAが担い、中間計算(base・holiday_add)はLETが整理します。この組み合わせにより「引数の外部インターフェース」と「内部ロジックの構造化」を分離でき、後から読んでも意図が伝わる関数が書けます。

よくあるエラーと原因・対処法

エラー・症状主な原因対処法
#NAME?(登録後の呼び出し時)名前マネージャーの「名前」と呼び出し時の関数名が違う・スペルミス名前マネージャーで登録名を確認し、呼び出し側のスペルと一致させる
#CALC!(即時呼び出し時)LAMBDAの後ろに引数を渡していない(=LAMBDA(x, x*2) だけで終わっている)即時呼び出しは =LAMBDA(x, x*2)(A2) の形で引数を渡す。または名前マネージャーに登録して呼び出す
#VALUE!(引数の数が合わない)登録したLAMBDAの引数が2つなのに1つしか渡していない(逆も同様)関数定義の引数数と呼び出し時の引数数を一致させる
再帰が止まらない(応答なし)再帰の終了条件(IF(n<=1, ...)等)が誤っていてスタックオーバーフロー終了条件を確認する。LAMBDAの再帰深度はExcelの計算制限内に収める
別ブックで#NAME?LAMBDAはブック単位登録のため別ブックでは未登録状態使いたいブックで名前マネージャーに同じLAMBDAを登録する
BYROWで#VALUE!LAMBDAが単一値ではなく配列を返している(BYROWは各行から単一値を期待する)計算式がスカラー(単一値)を返すLAMBDAのみBYROW/BCOLに渡す

MOS Excel試験でのLAMBDA関数出題ポイント

MOS Excel 365では「数式と関数の使用」スキル項目でLAMBDA関数が出題範囲に含まれます。以下の点を中心に準備してください。

  • 基本構文の理解:=LAMBDA([引数,] 計算式) の構造。引数は省略可能で、最後の引数が必ず「計算式」になる
  • 名前マネージャーへの登録手順:数式タブ → 名前マネージャー → 新規作成 → 参照範囲にLAMBDAを入力する、の操作を確実に行える
  • 呼び出し方の違い:名前マネージャー登録後は=関数名(引数)、即時呼び出しは=LAMBDA(x, 計算)(値)という2通りがある
  • ブック単位の有効範囲:登録したLAMBDAはブック内のみ有効。別ブックでは再登録が必要という制約を理解する
  • BYROWとの組み合わせ:BYROW/BCOLの第2引数にLAMBDAを渡すと各行・各列に適用できるという動作を理解する
  • LETとの違い:LAMBDAは再利用可能なカスタム関数、LETは1つの数式セル内の変数定義、という役割の差を説明できる

MOS試験 LAMBDA関数関連チェックリスト

確認ポイント操作内容難易度
基本構文の入力=LAMBDA(引数名, 計算式)(値) を正しく入力して即時呼び出しできる★☆☆
名前マネージャーへの登録数式タブ → 名前マネージャーからLAMBDAを登録できる★★☆
登録関数の呼び出し=関数名(引数) で登録済みLAMBDAを正しく呼び出せる★★☆
複数引数の設計2個以上の引数を持つLAMBDAを定義し、呼び出し時に正しい数の値を渡せる★★☆
BYROWとの連携=BYROW(範囲, LAMBDA(row, 計算式)) で各行に計算を適用できる★★★
LETとの組み合わせLAMBDA内でLETを使って中間変数を定義した関数を作れる★★★

試験対策におすすめの書籍

PR

できるExcel関数 Copilot対応

LAMBDA・LET・FILTER・BYROWなどExcel 365の新関数を含む最新の関数解説書。引数の意味から実務的な組み合わせパターンまで豊富な図解で学べ、MOS試験の関数問題対策にも定評があります。

PR

たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】

繰り返し作業をExcelで自動化する実践テクニックを網羅。LAMBDAで自作関数を作り業務ロジックを集約する発想と相性がよく、「再利用できる仕組みづくり」を体系的に学べる一冊です。

まとめ:LAMBDAは「Excelに自分専用の関数を追加する」仕組み

本記事のポイントをまとめます。

  • LAMBDAの役割:引数と計算ロジックを定義してブック内で再利用できるカスタム関数を作る。Microsoft 365 / Excel 2021以降で利用可能
  • 構文:=LAMBDA([引数1, 引数2, ...], 計算式)。引数は0個以上で、最後の引数が必ず計算式
  • 登録方法:数式タブ → 名前マネージャー → 新規作成 → 参照範囲にLAMBDAを入力する。登録後は =関数名(引数) で呼び出し可能
  • 有効範囲:登録はブック単位。他ブックで使うには再登録が必要
  • 再帰呼び出し:LAMBDAは名前マネージャー登録名で自分自身を呼び出す再帰も可能。終了条件を必ず設ける
  • BYROWとの連携:BYROWの第2引数にLAMBDAを渡すと各行に適用、BCOLは各列に適用。登録済み関数名をそのまま渡せる
  • LETとの組み合わせ:LAMBDA内でLETを使うと引数(外部インターフェース)と中間変数(内部ロジック)の両方を整理できる
  • MOS試験対策:登録手順・即時呼び出しとの違い・BYROW連携の動作を中心に確認する

LAMBDAを使いこなすと、社内で繰り返し使う計算ロジックを「一度定義してどこでも呼び出せる状態」に整理できます。特に評価判定・単価計算・日付変換など、複数シートにまたがって使っているIF入れ子があるなら、LAMBDAに置き換えることで修正の一元化と数式の可読性向上が同時に実現します。まずは小さな計算(税込み金額や評価ランク)から試してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次