Excelの数式が長くなりすぎて、自分でも何をしているのか分からなくなった経験はありませんか。IF文が5重にネストして横スクロールしないと全体が見えない、同じ計算式を10箇所にコピペしていてどれか1つ直し忘れる——こうした問題を解決するのがLAMBDA関数とLET関数です。
ただ、この2つは「知っているけど書けない」の代表格でもあります。そこで役立つのがClaudeです。この記事では、Claudeにカスタム関数の設計を依頼して、実務で使える数式を組み上げる手順を紹介します。
▲ Excel+Claude サンプル
LAMBDAとLETの違いと、使えるバージョン
依頼の前に、この2つの役割を押さえておくと指示が的確になります。
LET関数は、1つの数式の中で「変数」を定義できる関数です。同じ計算を何度も書かずに済みます。たとえば単価を3回参照する数式なら、こう書けます。
=LET(単価, VLOOKUP(A2,商品!A:D,4,0),
IF(単価>10000, 単価*0.9, 単価))
VLOOKUPを1回だけ実行して結果を使い回すので、記述量も計算負荷も減ります。
LAMBDA関数は、自分だけのオリジナル関数を作るための関数です。名前の定義に登録すれば、=営業日数(A2,B2) のように標準関数として呼び出せます。
対応バージョンは両者で異なります。LETはExcel 2021以降(Microsoft 365含む)で使えますが、LAMBDAはMicrosoft 365版とExcel 2024以降が必要です。この違いは依頼時に必ず伝える情報になります。
依頼に必ず入れる「4要素」テンプレ
依頼の精度は、次の4つを書くかどうかでほぼ決まります。
- 入力(引数) — 日付・金額・セル範囲など、何を渡すのか
- 出力 — 数値か文字列か、スピル(複数セルに展開)するのか
- データ例と環境 — 実際の値の形と、Excelのバージョン
- エラー処理の方針 — 該当なしは空文字、0除算は0、など
そのままコピーして使えるテンプレートがこちらです。
ExcelのLAMBDA関数でカスタム関数を作ってください。 【やりたいこと】(1行で) 【引数】名前と型 【データ例】実際のセルの値 【出力】型・スピルの有無 【エラー処理】該当なし・異常値のときの挙動 【環境】Microsoft 365版 / Excel 2024 など 名前の定義に登録する手順と、動作確認用のサンプル データ・期待値を3パターン付けてください。
最後の2行が効きます。「登録手順も」がないとLAMBDA式だけ返され、使う段階で詰まります。「サンプルデータと期待値」を頼めば、検証がそのまま実行できます。
実践例1:営業日数を数えるカスタム関数
NETWORKDAYS.INTLの長い記述を毎回書くのが面倒、というケース。テンプレの4要素を埋めて依頼すると、次のような数式が返ってきます。
=LAMBDA(開始日, 終了日,
LET(祝日, マスタ!$A$2:$A$50,
日数, NETWORKDAYS.INTL(開始日, 終了日, 1, 祝日),
IF(OR(開始日="", 終了日=""), "", 日数)
)
)
祝日範囲を変数にまとめ、空欄なら空文字を返す処理まで入っています。「エラー処理の方針」を先に伝えた効果です。
名前の定義への登録手順
LAMBDA活用で最もつまずくのがここです。3ステップで完了します。
- 数式タブ → 名前の定義 をクリック
- 名前に
営業日数と入力(スペース不可、セル参照と紛らわしい名前も避ける) - 参照範囲に上のLAMBDA式を丸ごと貼り付けて OK
以降はシート上で =営業日数(A2,B2) と書けます。うまく動かないときは、先にシートのセルでLAMBDA式の末尾に (A2,B2) を付けて直接実行し、正しい値が出るか確かめてから登録すると切り分けが早いです。
実践例2:IFネストをLETで整理する
既存の巨大な数式を渡してリファクタリングを頼むパターン。効果が最も見えやすい使い方です。
Before(VLOOKUPが4回登場)
=IF(VLOOKUP(A2,商品!A:D,4,0)>10000,VLOOKUP(A2,商品!A:D,4,0)*0.9, IF(VLOOKUP(A2,商品!A:D,4,0)>5000,VLOOKUP(A2,商品!A:D,4,0)*0.95, VLOOKUP(A2,商品!A:D,4,0)))
依頼時は、条件として「計算結果は元の数式と完全に同じにする」「変数名は日本語で」「各変数の意味を説明する」の3点を添えます。
After
=LET( 単価, VLOOKUP(A2,商品!A:D,4,0), 割引率, IF(単価>10000, 0.9, IF(単価>5000, 0.95, 1)), 単価 * 割引率 )
VLOOKUPの呼び出しが4回から1回になり、「1万円超なら1割引、5千円超なら5%引き」という意図が数式を読むだけで分かるようになります。「計算結果は元と完全に同じに」の一文が、意図しない仕様変更を防ぐ安全装置です。
なお、LETの変数名にはスペースが使えず、ブック内の既存の名前定義と同じ語を使うと衝突してエラーになります。単価 のような一般的な語を使うときは、名前の定義に同名がないか確認しておくと安全です。
もう一歩進んだ依頼
慣れてきたら、次のキーワードを依頼文に混ぜると設計の幅が広がります。
- MAP/BYROW/SCAN — 「配列の各行にこの処理を適用して」と頼むと、作業列なしで一括処理する数式が返ります
- 再帰LAMBDA — 自分自身を呼び出す構造。文字列の連続置換や階層データの集計に使えます
- ISOMITTED — 引数を省略できるカスタム関数を作るときに使います。「第2引数は省略可、省略時は今日の日付」といった指定が可能です
使う前に確認しておきたい注意点
LAMBDAで定義した名前はそのブックの中だけで有効です。別ファイルにコピペしても動きません。共有するなら名前の定義ごとコピーするか、テンプレートブックを配布する運用にしましょう。
Excel 2021以前のユーザーにファイルを渡すと、数式に _xlfn.LAMBDA という文字列が混入し、セルには #NAME? が表示されます。社外提出用の資料では、あえて従来の数式で書くほうが安全な場面もあります。
そしてもう一点。Claudeが生成した数式は、必ず自分のデータで検証してから本番運用に乗せること。特に集計や請求に関わる数式は、手計算と突き合わせる一手間を惜しまないでください。#VALUE! や #CALC! が出たら、その表示をそのまま貼り付けて「このエラーが出ます」と伝えれば、原因の切り分けまで付き合ってくれます。
まとめ
LAMBDAとLETは強力ですが、ゼロから書くと学習コストが高い関数です。入力・出力・データ例と環境・エラー処理——この4要素を伝えて設計を任せれば、そのコストを大きく圧縮できます。
まずは今使っている一番長い数式をコピーして、「これをLETで整理して」と投げてみてください。上のBefore/Afterのように、数式が半分の長さになる感覚を一度味わうと、もう元には戻れなくなるはずです。
関連記事
- Excelのセルに =CLAUDE_ASK と書くだけ|xlwingsでAIを表計算に組み込む
- Excelデータを貼るだけ。Claudeに集計・異常値検出・報告書作成まで任せる方法
- SUMIFS・COUNTIFSの複雑な条件式はClaudeに設計させる【日付範囲・部分一致・OR条件対応】
- Claude×Excelで業務レポート自動作成|1時間の作業を10分にする手順とプロンプト
- 集計はできるのに分析で止まる人へ|ClaudeにExcelのCSVを読ませる4ステップ【プロンプトコピペOK】