<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>カスタム関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%96%A2%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 22 Aug 2026 00:51:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>カスタム関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのLET・LAMBDA関数の使い方｜数式を自分の関数に変える方法</title>
		<link>https://mashukabu.com/excel-let-lambda-function-guide/</link>
					<comments>https://mashukabu.com/excel-let-lambda-function-guide/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 16 May 2026 23:15:08 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[LET関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[カスタム関数]]></category>
		<category><![CDATA[名前定義]]></category>
		<category><![CDATA[数式整理]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6825</guid>

					<description><![CDATA[ExcelのLET関数とLAMBDA関数の使い方を実務例8パターンで解説。変数定義で数式を整理するLETと、VBA不要でカスタム関数を自作できるLAMBDAを組み合わせれば、数式のメンテナンスコストが大幅に下がります。FAQ・エラー対処付き。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「このVLOOKUPの数式、ネストが深すぎて自分でも何を書いたか分からない…」。Excelで複雑な数式を扱う方なら、一度はそんな経験があるのではないでしょうか。</p>



<p class="wp-block-paragraph">同じ計算式を複数のセルや別のシートにコピペした後、参照範囲を1か所だけ変えたいとき。気づくと10か所も同じ修正を繰り返し、1つでも直し忘れると <code>#N/A</code> の嵐です。VBAでカスタム関数を作れば解決するとは分かっていても、「マクロは怖い」「セキュリティ警告が嫌だ」と踏み切れない方も多いはずです。</p>



<p class="wp-block-paragraph">そこで本記事では、<strong>LET関数</strong> と <strong>LAMBDA関数</strong> の使い方を解説します。この2つを使えば、VBAを一切書かずに「数式の中で名前を付ける」「自分専用の関数を登録する」ことが可能です。読み終えたとき、長い数式は驚くほどスッキリし、コピペ地獄から解放されているはずです。</p>



<p class="wp-block-paragraph">実務例は全部で8パターン用意しました。LET実務例4つ、LAMBDA実務例3つ、組み合わせ実務例3つです。社内の請求書テンプレートや勤怠データ、評価ランク判定などすぐに転用できるものばかりです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">LET関数とLAMBDA関数、どう違う？1分でわかる役割整理</a><ol><li><a href="#toc2" tabindex="0">LET関数＝「セル内で変数を定義する」関数</a></li><li><a href="#toc3" tabindex="0">LAMBDA関数＝「ブック内で再利用できる関数を定義する」関数</a></li><li><a href="#toc4" tabindex="0">LETとLAMBDAの使い分け早見表</a></li></ol></li><li><a href="#toc5" tabindex="0">なぜ今LETとLAMBDAなのか｜従来のExcel数式が抱えていた3つの痛み</a><ol><li><a href="#toc6" tabindex="0">痛み①：同じ式の二度書き地獄</a></li><li><a href="#toc7" tabindex="0">痛み②：参照範囲の一括変更が漏れる</a></li><li><a href="#toc8" tabindex="0">痛み③：VBA UDFのセキュリティ警告</a></li></ol></li><li><a href="#toc9" tabindex="0">LET関数の基本：変数に名前をつけて数式をスッキリさせる</a><ol><li><a href="#toc10" tabindex="0">LET関数の基本構文</a></li><li><a href="#toc11" tabindex="0">実務例①：VLOOKUP+IFERRORを変数化してメンテナンスコストを削減</a></li><li><a href="#toc12" tabindex="0">実務例②：FILTER+SORTを段階的に書いてデバッグしやすくする</a></li><li><a href="#toc13" tabindex="0">実務例③：複雑な条件分岐の途中結果に名前を付ける</a></li><li><a href="#toc14" tabindex="0">実務例④：経理の累進計算をLETで段階分解</a></li><li><a href="#toc15" tabindex="0">Before / After 比較</a></li></ol></li><li><a href="#toc16" tabindex="0">LAMBDA関数の基本：名前定義で「自分の関数」を登録する手順</a><ol><li><a href="#toc17" tabindex="0">LAMBDA関数の基本構文</a></li><li><a href="#toc18" tabindex="0">名前の管理へ登録する手順</a></li><li><a href="#toc19" tabindex="0">実務例⑤：消費税計算をLAMBDA関数化して毎月使い回す</a></li><li><a href="#toc20" tabindex="0">実務例⑥：営業日換算LAMBDAで週末カウントを統一</a></li><li><a href="#toc21" tabindex="0">実務例⑦：評価ランクLAMBDAで成績判定を関数化</a></li></ol></li><li><a href="#toc22" tabindex="0">LAMBDA + ヘルパー関数で配列処理を一気に書く</a><ol><li><a href="#toc23" tabindex="0">MAP関数との連携（要素ごとにLAMBDAを適用）</a></li><li><a href="#toc24" tabindex="0">BYROW/BYCOLとの連携（行・列ごとの一括処理）</a></li></ol></li><li><a href="#toc25" tabindex="0">LET + LAMBDA を組み合わせる：実務頻出3パターン</a><ol><li><a href="#toc26" tabindex="0">パターン1：LETで中間変数を整理してからLAMBDAに渡す</a></li><li><a href="#toc27" tabindex="0">パターン2：FILTER+SORTの組み合わせをLET変数で段階的に書く</a></li><li><a href="#toc28" tabindex="0">パターン3：LAMBDA内部でLETを使ってロジックを可読化する</a></li></ol></li><li><a href="#toc29" tabindex="0">LET/LAMBDA vs VBA Function｜使い分けの判断基準</a></li><li><a href="#toc30" tabindex="0">こんなエラーが出たら：つまずきポイントと対処法</a><ol><li><a href="#toc31" tabindex="0">#NAME?エラーが出る原因と解決策</a></li><li><a href="#toc32" tabindex="0">#CALC!エラーが出る原因と解決策</a></li><li><a href="#toc33" tabindex="0">変数名にセル参照と同名を使ったときの挙動</a></li><li><a href="#toc34" tabindex="0">LAMBDAの再帰呼び出しでスタックオーバーフロー</a></li></ol></li><li><a href="#toc35" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc36" tabindex="0">まとめ：LETは今日から、LAMBDAは次のステップで</a><ol><li><a href="#toc37" tabindex="0">関連記事で次のステップに進む</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">LET関数とLAMBDA関数、どう違う？1分でわかる役割整理</span></h2>



<p class="wp-block-paragraph">LET関数とLAMBDA関数は、どちらも「数式に名前を付けて整理する」ための関数です。ただし、名前を付ける対象とスコープが大きく異なります。まずは両者の役割を1分で押さえましょう。</p>



<h3 class="wp-block-heading"><span id="toc2">LET関数＝「セル内で変数を定義する」関数</span></h3>



<p class="wp-block-paragraph">LET関数は、<strong>1つのセルの中だけで通用する「変数」</strong> を定義できる関数です。Excelの文脈では「数式の途中で計算結果に名前を付けておき、後で参照できる仕組み」と理解してください。プログラミング経験者なら「ローカル変数」のイメージです。</p>



<p class="wp-block-paragraph">たとえば <code>VLOOKUP(A2, $D:$E, 2, 0)</code> を <code>result</code> という名前で保存しておけば、後の式で <code>result</code> と書くだけで再利用できます。同じ式を2回書く必要がなく、計算も1回しか走らないのでパフォーマンスも向上します。</p>



<p class="wp-block-paragraph">ただしLET関数のスコープは <strong>「そのセル内のみ」</strong> に限定されます。他のセルや他のシートから <code>result</code> を参照することはできません。あくまで「そのセルを書くときの一時メモ帳」というイメージです。</p>



<h3 class="wp-block-heading"><span id="toc3">LAMBDA関数＝「ブック内で再利用できる関数を定義する」関数</span></h3>



<p class="wp-block-paragraph">LAMBDA関数は、<strong>ブック全体で使い回せる「自分専用の関数」</strong> を定義できる関数です。LAMBDA式を「名前の管理」に登録すると、ブックのどのシート・どのセルからも <code>=MY_FUNC(引数)</code> の形式で呼び出せます。</p>



<p class="wp-block-paragraph">これまでカスタム関数を作るにはVBAでユーザー定義関数（UDF）を書く必要がありました。LAMBDAなら <strong>VBAを一切使わずに、数式だけでカスタム関数を作成できます</strong>。マクロのセキュリティ警告も出ません。まるでプログラムのようですが、あくまでセルに書く数式の延長です。</p>



<p class="wp-block-paragraph">xlsx形式のまま配布できるため、メール添付やSharePoint共有もマクロ警告で止まらないという大きな利点もあります。</p>



<h3 class="wp-block-heading"><span id="toc4">LETとLAMBDAの使い分け早見表</span></h3>



<p class="wp-block-paragraph">両者の違いを「スコープ」と「役割」の2軸で整理すると、次の表になります。</p>



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>LET関数</th><th>LAMBDA関数</th></tr></thead><tbody><tr><td>役割</td><td>変数の定義</td><td>関数の定義</td></tr><tr><td>スコープ</td><td>セル内のみ</td><td>ブック全体（名前定義で登録時）</td></tr><tr><td>再利用</td><td>同じセル内のみ</td><td>他セル・他シートからも呼び出し可</td></tr><tr><td>主な用途</td><td>1つの長い数式の整理・可読性向上</td><td>複数箇所で繰り返す計算ロジックの関数化</td></tr><tr><td>対応バージョン</td><td>Microsoft 365 / Excel 2021以降</td><td>Microsoft 365のみ（Excel 2021非対応）</td></tr><tr><td>VBAの必要性</td><td>不要</td><td>不要</td></tr><tr><td>配布形式</td><td>xlsx</td><td>xlsx</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここで重要なのが <strong>バージョン差分</strong> です。LET関数はExcel 2021でも使えますが、LAMBDA関数はMicrosoft 365専用です。自分のバージョンを確認するには「ファイル」→「アカウント」→「製品情報」を見てください。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/excel-let-lambda-function-guide/01_data_let-lambda-comparison.png/">_images/excel-let-lambda-function-guide/01_data_let-lambda-comparison.png</a></p>



<h2 class="wp-block-heading"><span id="toc5">なぜ今LETとLAMBDAなのか｜従来のExcel数式が抱えていた3つの痛み</span></h2>



<p class="wp-block-paragraph">LETとLAMBDAの説明に入る前に、「なぜこの2関数が必要になったのか」を整理しておきます。従来のExcel数式には、慣れた人ほど直面する3つの痛みがありました。</p>



<h3 class="wp-block-heading"><span id="toc6">痛み①：同じ式の二度書き地獄</span></h3>



<p class="wp-block-paragraph">最も典型的なのが「条件分岐の中で同じ計算を2回書く」パターンです。たとえばVLOOKUPで取得した値が空欄なら「未登録」、そうでなければそのまま表示したい場合、こう書くしかありませんでした。</p>



<pre class="wp-block-code"><code>'--- 二度書きが避けられない従来の数式 ---
=IF(VLOOKUP(A2,$D:$E,2,0)=&quot;&quot;, &quot;未登録&quot;, VLOOKUP(A2,$D:$E,2,0))</code></pre>



<p class="wp-block-paragraph">VLOOKUP部分が2か所に出てきます。参照範囲を変えたいときは2か所同時に修正しなければなりません。1か所でも直し忘れると <code>#N/A</code> が混ざる悲劇が起こります。さらに同じVLOOKUPが2回実行されるため、データが大きいときは計算速度も無駄になります。</p>



<p class="wp-block-paragraph">条件分岐の基本については <a href="https://mashukabu.com/excel-function-howto-use-if/">ExcelのIF関数の使い方</a> で詳しく解説しています。</p>



<h3 class="wp-block-heading"><span id="toc7">痛み②：参照範囲の一括変更が漏れる</span></h3>



<p class="wp-block-paragraph">数式を100セルにコピーした後で「参照範囲を <code>$D:$E</code> から <code>$D:$F</code> に変えたい」と思ったときが地獄です。すべての数式を編集モードで開き、置換ダイアログか手作業で書き換えるしかありません。</p>



<p class="wp-block-paragraph">VLOOKUPを多用している方は <a href="https://mashukabu.com/excel-function-howto-use-vlookup/">ExcelのVLOOKUP関数の使い方</a> も合わせてご覧ください。参照範囲の管理が一気に楽になります。</p>



<h3 class="wp-block-heading"><span id="toc8">痛み③：VBA UDFのセキュリティ警告</span></h3>



<p class="wp-block-paragraph">「だったらVBAでカスタム関数を作ればいい」と考える方もいるでしょう。実際 <a href="https://mashukabu.com/excel-vba-howto-use-function/">VBAのFunctionプロシージャ</a> を使えばカスタム関数（UDF）が作れます。しかし配布時に問題が起きます。</p>



<p class="wp-block-paragraph">VBA入りのブックは「マクロ有効ブック（xlsm）」になり、開いた人に「マクロを有効にしますか？」というセキュリティ警告が必ず出ます。社内ポリシーで「不明なマクロは無効化」が設定されている会社では、せっかくのUDFが動きません。</p>



<p class="wp-block-paragraph">LET/LAMBDAなら <strong>xlsxのまま</strong> カスタム関数を作れるため、この壁を完全に回避できます。</p>



<h2 class="wp-block-heading"><span id="toc9">LET関数の基本：変数に名前をつけて数式をスッキリさせる</span></h2>



<p class="wp-block-paragraph">LET関数は、長くてネストが深い数式を「段階的に名前を付けながら組み立てる」イメージで使います。難しく考える必要はなく、「途中の計算結果に名前を付けておく」だけです。</p>



<h3 class="wp-block-heading"><span id="toc10">LET関数の基本構文</span></h3>



<p class="wp-block-paragraph">LET関数の構文は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>内容</th></tr></thead><tbody><tr><td>構文</td><td><code>=LET(name1, value1, [name2, value2, …,] calculation)</code></td></tr><tr><td>必須引数</td><td>最低1組の「名前・値」と、最後に必ず計算式</td></tr><tr><td>最大ペア数</td><td>126個の名前/値ペア</td></tr><tr><td>変数名の制約</td><td>文字で始まる／スペース不可／セル参照（A1等）と同名不可／TRUE・FALSE等の予約語不可</td></tr><tr><td>対応バージョン</td><td>Microsoft 365 / Excel 2021以降</td></tr><tr><td>出典</td><td><a href="https://support.microsoft.com/en-us/office/let-function-34842dd8-b92b-4d3f-b325-b8b8f9908999">Microsoft公式: LET関数</a></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最もシンプルな例を見てみましょう。</p>



<pre class="wp-block-code"><code>'--- LET関数の最小サンプル ---
=LET(x, 5, SUM(x, 1))</code></pre>



<p class="wp-block-paragraph">この式は「<code>x</code> に <code>5</code> を代入し、<code>SUM(x, 1)</code> を計算する」という意味で、結果は <code>6</code> になります。Excelの文脈では「数式の中で名前付きの一時変数を作れる」と理解すれば十分です。</p>



<p class="wp-block-paragraph">ここからは実務で本当に役立つLETの使い方を、4つの実例で解説していきます。</p>



<h3 class="wp-block-heading"><span id="toc11">実務例①：VLOOKUP+IFERRORを変数化してメンテナンスコストを削減</span></h3>



<p class="wp-block-paragraph">LETが最も威力を発揮するのは、<strong>同じ式を複数回書かなければならない場面</strong> です。代表例が「VLOOKUPの結果をIFERRORで包む」パターンです。</p>



<p class="wp-block-paragraph">通常の書き方では、VLOOKUPを2回書かなければなりません。</p>



<pre class="wp-block-code"><code>'--- LETなしの従来パターン（VLOOKUPが2回登場） ---
=IF(VLOOKUP(A2, $D:$E, 2, 0)=&quot;&quot;, &quot;未登録&quot;, VLOOKUP(A2, $D:$E, 2, 0))</code></pre>



<p class="wp-block-paragraph">参照範囲を <code>$D:$F</code> に変えたいとき、2か所すべてを直さないと結果が狂います。これをLETで書き換えるとこうなります。</p>



<pre class="wp-block-code"><code>'--- LETあり：1か所修正で済む新パターン ---
=LET(
  result, VLOOKUP(A2, $D:$E, 2, 0),
  IF(result=&quot;&quot;, &quot;未登録&quot;, result)
)</code></pre>



<p class="wp-block-paragraph">VLOOKUP部分が <code>result</code> という変数1か所だけになりました。参照範囲を変更したいときは <code>result</code> の定義行だけ直せばよく、メンテナンスコストが半分以下になります。さらにVLOOKUPは1回しか実行されないため、計算速度の面でも有利です。</p>



<p class="wp-block-paragraph">VLOOKUPの基本的な使い方を再確認したい方は <a href="https://mashukabu.com/excel-function-howto-use-vlookup/">ExcelのVLOOKUP関数の使い方</a> を参照してください。エラー処理を厚くしたい方は <a href="https://mashukabu.com/excel-function-howto-use-iferror/">ExcelのIFERROR関数の使い方</a> も合わせてご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc12">実務例②：FILTER+SORTを段階的に書いてデバッグしやすくする</span></h3>



<p class="wp-block-paragraph">動的配列関数（FILTER, SORT, UNIQUE等）を組み合わせると、1セルに長い式が並びがちです。LETを使うと「フィルタしてからソート」という処理を段階的に書けます。</p>



<pre class="wp-block-code"><code>'--- 動的配列関数を段階化したサンプル ---
=LET(
  filtered, FILTER(A2:C100, B2:B100=&quot;東京&quot;),
  sorted,   SORT(filtered, 3, -1),
  sorted
)</code></pre>



<p class="wp-block-paragraph"><code>filtered</code> の段階だけ表示すれば「フィルタが正しいか」を確認できます。次に <code>sorted</code> を返せば「ソートも正しいか」が見えます。長い数式を1行ずつデバッグできる構造になるのが利点。</p>



<p class="wp-block-paragraph">慣れてくれば、最後の <code>sorted</code> を <code>INDEX(sorted, 1, 3)</code> などに差し替えて「ソート後の1行目の3列目だけ抜く」という応用にもつなげられます。</p>



<h3 class="wp-block-heading"><span id="toc13">実務例③：複雑な条件分岐の途中結果に名前を付ける</span></h3>



<p class="wp-block-paragraph">「売上が100万円以上、かつ達成率が80%以上ならA評価」のような複合条件は、IF/IFSの入れ子で書くと読みにくくなりがちです。LETで条件を変数化すると意図が明確になります。</p>



<pre class="wp-block-code"><code>'--- 複合条件をLETで整理した例 ---
=LET(
  sales,      B2,
  rate,       C2,
  isHighSale, sales &gt;= 1000000,
  isHighRate, rate  &gt;= 0.8,
  IF(AND(isHighSale, isHighRate), &quot;A評価&quot;,
   IF(isHighSale, &quot;B評価&quot;,
   IF(isHighRate, &quot;C評価&quot;, &quot;D評価&quot;)))
)</code></pre>



<p class="wp-block-paragraph"><code>isHighSale</code> <code>isHighRate</code> という変数名のおかげで、後から読み返したときに「何を判定しているか」が一目で分かります。半年後の自分にも親切な数式です。</p>



<p class="wp-block-paragraph">条件分岐の組み合わせをさらに深掘りしたい方は <a href="https://mashukabu.com/excel-function-howto-use-if/">ExcelのIF関数の使い方</a> で基本パターンを確認してください。</p>



<h3 class="wp-block-heading"><span id="toc14">実務例④：経理の累進計算をLETで段階分解</span></h3>



<p class="wp-block-paragraph">経理処理で「税抜金額 → 消費税 → 端数処理 → 税込金額」という多段階計算は、LETの段階分解と相性が抜群です。</p>



<pre class="wp-block-code"><code>'--- 経理の段階計算を可視化 ---
=LET(
  taxRate,   0.1,
  netPrice,  B2,
  tax,       ROUND(netPrice * taxRate, 0),
  gross,     netPrice + tax,
  gross
)</code></pre>



<p class="wp-block-paragraph">消費税率が変わったときも、最初の <code>taxRate</code> の値だけを直せば全体に反映されます。各ステップに変数名が付いているため、デバッグで「途中の <code>tax</code> の値が想定と違う」と気づきやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc15">Before / After 比較</span></h3>



<p class="wp-block-paragraph">LETを導入する前と後で、数式の見た目がどう変わるかを比較します。</p>



<p class="wp-block-paragraph"><strong>Before（LETなし）</strong></p>



<pre class="wp-block-code"><code>'--- 従来：氏名と部署を1セルに連結する力技 ---
=IFERROR(VLOOKUP(A2,$D:$E,2,0),&quot;該当なし&quot;)&amp;&quot; / &quot;&amp;IFERROR(VLOOKUP(A2,$D:$F,3,0),&quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>After（LETあり）</strong></p>



<pre class="wp-block-code"><code>'--- After：1行ずつ意味が読み取れる ---
=LET(
  name,  IFERROR(VLOOKUP(A2,$D:$E,2,0),&quot;該当なし&quot;),
  dept,  IFERROR(VLOOKUP(A2,$D:$F,3,0),&quot;該当なし&quot;),
  name &amp; &quot; / &quot; &amp; dept
)</code></pre>



<p class="wp-block-paragraph">After版は1行ずつ「何を計算しているか」が読み取れます。半年後に自分が見直しても、別の担当者が引き継いでも理解しやすくなるでしょう。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/05/02_result_let-before-after.png" alt="02 result let before after" /></figure>



<p class="wp-block-paragraph">LET関数のもっと詳しい仕様や応用例については <a href="https://mashukabu.com/excel-function-howto-use-let/">ExcelのLET関数の使い方｜変数定義で数式を短く整理する方法</a> で個別に解説しています。深掘りしたい方はそちらもご参照ください。</p>



<h2 class="wp-block-heading"><span id="toc16">LAMBDA関数の基本：名前定義で「自分の関数」を登録する手順</span></h2>



<p class="wp-block-paragraph">LAMBDA関数は、LETの一歩先にある「数式を関数化して使い回す」ための仕組みです。冒頭で触れたとおり <strong>Microsoft 365専用</strong> なので、Excel 2021ユーザーは利用できない点にご注意ください。</p>



<h3 class="wp-block-heading"><span id="toc17">LAMBDA関数の基本構文</span></h3>



<p class="wp-block-paragraph">LAMBDA関数の構文は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>内容</th></tr></thead><tbody><tr><td>構文</td><td><code>=LAMBDA([parameter1, parameter2, …,] calculation)</code></td></tr><tr><td>必須引数</td><td>最後の計算式（パラメータは省略可）</td></tr><tr><td>最大パラメータ数</td><td>253個</td></tr><tr><td>即時呼び出し</td><td><code>=LAMBDA(temp, (5/9)*(temp-32))(100)</code> のように末尾に引数を渡す</td></tr><tr><td>名前定義への登録</td><td>「数式」タブ→「名前の管理」→「新規」から登録</td></tr><tr><td>対応バージョン</td><td>Microsoft 365専用（Excel 2021は非対応）</td></tr><tr><td>出典</td><td><a href="https://support.microsoft.com/en-us/office/lambda-function-bd212d27-1cd1-4321-a34a-ccbf254b8b67">Microsoft公式: LAMBDA関数</a></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDAを単独でセルに書くだけでは関数の「定義」しかできません。末尾に引数を渡さないと <code>#CALC!</code> エラーが出ます。本来の使い方は「名前の管理」に登録してから呼び出す形です。</p>



<h3 class="wp-block-heading"><span id="toc18">名前の管理へ登録する手順</span></h3>



<p class="wp-block-paragraph">LAMBDA関数を実用するには「名前の管理」への登録が必須です。Windows版Excelでの手順は以下のとおりです。</p>



<ol class="wp-block-list"><li><strong>「数式」タブ</strong> をクリックする</li><li><strong>「名前の管理」</strong> をクリック（ショートカット: <code>Ctrl + F3</code>）</li><li>ダイアログ右上の <strong>「新規」</strong> をクリック</li><li>「新しい名前」ダイアログで以下を入力する</li></ol>



<ul class="wp-block-list"><li><strong>名前</strong>: 関数名（例: <code>TAX_CALC</code>）。Excelの既存関数名と被らないようにする</li><li><strong>範囲</strong>: 通常は「ブック」を選択（シートを選ぶと他シートから呼び出せない）</li><li><strong>コメント</strong>: 関数の説明（後で見返したときに役立つ）</li><li><strong>参照範囲</strong>: LAMBDA式を貼り付ける（例: <code>=LAMBDA(price, price*1.1)</code>）</li></ul>



<ol class="wp-block-list"><li><strong>「OK」</strong> をクリックして登録完了</li></ol>



<p class="wp-block-paragraph">登録が成功すると、そのブック内のどのセルでも <code>=TAX_CALC(1000)</code> のようにネイティブ関数と同じ感覚で呼び出せるようになります。</p>



<p class="wp-block-paragraph">※ 名前の管理ダイアログの操作画面は、デスクトップ版Excel（Windows）でご確認ください。</p>



<h3 class="wp-block-heading"><span id="toc19">実務例⑤：消費税計算をLAMBDA関数化して毎月使い回す</span></h3>



<p class="wp-block-paragraph">毎月の請求書で「税抜価格 × 1.1」の式を何十か所にも書いているなら、LAMBDA化の絶好のチャンスです。次のLAMBDA式を <code>TAX_INCLUDED</code> という名前で登録してみましょう。</p>



<pre class="wp-block-code"><code>'--- 名前の管理に登録するLAMBDA式 ---
=LAMBDA(price, ROUND(price*1.1, 0))</code></pre>



<p class="wp-block-paragraph">登録後はどのセルでも次のように使えます。</p>



<pre class="wp-block-code"><code>'--- 通常の関数として呼び出し可能 ---
=TAX_INCLUDED(B2)</code></pre>



<p class="wp-block-paragraph">将来、消費税率が変わったり端数処理を「切り捨て」に変えたいときは、<strong>「名前の管理」のLAMBDA式を1か所書き換えるだけ</strong> で全体に反映されます。コピペした数式を100か所修正する必要は一切ありません。</p>



<h3 class="wp-block-heading"><span id="toc20">実務例⑥：営業日換算LAMBDAで週末カウントを統一</span></h3>



<p class="wp-block-paragraph">「ある日付からN営業日後の日付を返す」という処理は、社内の勤怠管理や納期計算で頻出です。NETWORKDAYSやWORKDAYを毎回書くのではなく、LAMBDA化すると統一できます。</p>



<pre class="wp-block-code"><code>'--- WORKDAY_AFTER として名前登録 ---
=LAMBDA(startDate, days, WORKDAY(startDate, days))</code></pre>



<p class="wp-block-paragraph">呼び出し例:</p>



<pre class="wp-block-code"><code>'--- 5営業日後の日付を取得 ---
=WORKDAY_AFTER(TODAY(), 5)</code></pre>



<p class="wp-block-paragraph">祝日リストも引数に加えたければ、次のように拡張できます。</p>



<pre class="wp-block-code"><code>'--- 祝日対応版 WORKDAY_AFTER ---
=LAMBDA(startDate, days, holidays, WORKDAY(startDate, days, holidays))</code></pre>



<p class="wp-block-paragraph">このようにLAMBDAは「あとから引数を増やす」拡張も柔軟にできます。</p>



<h3 class="wp-block-heading"><span id="toc21">実務例⑦：評価ランクLAMBDAで成績判定を関数化</span></h3>



<p class="wp-block-paragraph">「点数からA/B/C/D評価を返す」というような判定ロジックは、複数のシートで同じ閾値を使うことが多く、LAMBDA向き。</p>



<pre class="wp-block-code"><code>'--- RANK_GRADE として名前登録 ---
=LAMBDA(score,
  IF(score &gt;= 80, &quot;A&quot;,
   IF(score &gt;= 60, &quot;B&quot;,
    IF(score &gt;= 40, &quot;C&quot;, &quot;D&quot;)))
)</code></pre>



<p class="wp-block-paragraph">呼び出し:</p>



<pre class="wp-block-code"><code>'--- セルB2の点数から評価を取得 ---
=RANK_GRADE(B2)</code></pre>



<p class="wp-block-paragraph">評価基準が「80→85」に変わったとしても、名前の管理にあるLAMBDA式の1か所を直すだけで、社内の全シートに反映されます。担当者ごとの判定ブレも防げます。</p>



<h2 class="wp-block-heading"><span id="toc22">LAMBDA + ヘルパー関数で配列処理を一気に書く</span></h2>



<p class="wp-block-paragraph">LAMBDA関数の真価は、<strong>MAP/BYROW/BYCOL/REDUCE等のヘルパー関数と組み合わせたとき</strong> に現れます。これらは「LAMBDA式を受け取って、配列の各要素に適用する」高階関数。</p>



<h3 class="wp-block-heading"><span id="toc23">MAP関数との連携（要素ごとにLAMBDAを適用）</span></h3>



<p class="wp-block-paragraph">MAP関数は、配列の各要素に対してLAMBDAを実行し、結果を配列で返します。たとえば「A2:A10 の全ての値に税込計算を適用したい」とき、次のように書けます。</p>



<pre class="wp-block-code"><code>'--- A2:A10の全要素にTAX_INCLUDEDを適用 ---
=MAP(A2:A10, LAMBDA(x, ROUND(x*1.1, 0)))</code></pre>



<p class="wp-block-paragraph">これでスピル動作により、隣の列に税込価格が9行分一気に展開されます。LAMBDAを毎セルにコピーする必要はありません。</p>



<p class="wp-block-paragraph">MAP関数の詳しい使い方は <a href="https://mashukabu.com/excel-function-howto-use-map/">ExcelのMAP関数の使い方</a> で個別解説しています。</p>



<h3 class="wp-block-heading"><span id="toc24">BYROW/BYCOLとの連携（行・列ごとの一括処理）</span></h3>



<p class="wp-block-paragraph">BYROW関数は「行ごと」に処理をかけ、BYCOL関数は「列ごと」に処理をかけます。たとえば「各行の最大値を取り出す」ならBYROWが便利です。</p>



<pre class="wp-block-code"><code>'--- 各行の最大値を取得 ---
=BYROW(A2:D10, LAMBDA(row, MAX(row)))</code></pre>



<p class="wp-block-paragraph">3列の合計を行単位で出したいなら次のとおりです。</p>



<pre class="wp-block-code"><code>'--- 各行の合計を取得 ---
=BYROW(A2:C10, LAMBDA(row, SUM(row)))</code></pre>



<p class="wp-block-paragraph">集計関数（SUM/MAX/MIN/AVERAGE）をLAMBDA経由で渡すだけで、行・列単位の一括処理が完了します。SUMPRODUCTや配列数式の代わりに使えるシーンが多く、慣れると手放せません。</p>



<h2 class="wp-block-heading"><span id="toc25">LET + LAMBDA を組み合わせる：実務頻出3パターン</span></h2>



<p class="wp-block-paragraph">LETとLAMBDAは単独でも便利ですが、<strong>組み合わせると真価を発揮します</strong>。ここでは実務頻出の3パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc26">パターン1：LETで中間変数を整理してからLAMBDAに渡す</span></h3>



<p class="wp-block-paragraph">外側の数式でLETを使ってデータを整え、整えた結果をLAMBDAベースのカスタム関数に渡す書き方です。</p>



<pre class="wp-block-code"><code>'--- LETでデータ整形→LAMBDA関数を呼び出す ---
=LET(
  raw,    FILTER(A2:C100, B2:B100=&quot;東京&quot;),
  sorted, SORT(raw, 3, -1),
  TAX_INCLUDED(INDEX(sorted, 1, 3))
)</code></pre>



<p class="wp-block-paragraph">中間結果に名前を付けることで「フィルタ→ソート→税込変換」という処理の流れが明確になります。</p>



<h3 class="wp-block-heading"><span id="toc27">パターン2：FILTER+SORTの組み合わせをLET変数で段階的に書く</span></h3>



<p class="wp-block-paragraph">LAMBDAを使わなくても、LET単体で動的配列関数を段階的に書いてみましょう。</p>



<pre class="wp-block-code"><code>'--- 動的配列関数を段階化 ---
=LET(
  filtered, FILTER(A2:C10, B2:B10=&quot;東京&quot;),
  SORT(filtered, 3, -1)
)</code></pre>



<p class="wp-block-paragraph">東京のデータだけを抽出し、3列目で降順ソートする処理を「2段階」で書いています。中間結果の <code>filtered</code> だけを表示すれば動作確認ができるため、デバッグも容易です。</p>



<h3 class="wp-block-heading"><span id="toc28">パターン3：LAMBDA内部でLETを使ってロジックを可読化する</span></h3>



<p class="wp-block-paragraph">LAMBDAで複雑な計算をするとき、内部にLETを入れ子にして中間変数を整理できます。</p>



<pre class="wp-block-code"><code>'--- LAMBDA内部にLETを入れ子で書く ---
=LAMBDA(price,
  LET(
    base, price * 1.1,
    tax,  base * 0.1,
    base + tax
  )
)</code></pre>



<p class="wp-block-paragraph">この式を <code>TAX_DETAIL</code> として登録すれば、<code>=TAX_DETAIL(1000)</code> で呼び出せます。LAMBDAの引数 <code>price</code> を受け取り、LETで段階的に <code>base</code> と <code>tax</code> を計算してから合計を返す構造。</p>



<h2 class="wp-block-heading"><span id="toc29">LET/LAMBDA vs VBA Function｜使い分けの判断基準</span></h2>



<p class="wp-block-paragraph">「カスタム関数を作るならLAMBDAとVBA UDF、どちらを選ぶべきか」は多くの方が悩む点です。両者を実務観点で比較します。</p>



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>LAMBDA関数</th><th>VBA Functionプロシージャ</th></tr></thead><tbody><tr><td>作成手段</td><td>数式のみ</td><td>VBAコード（VBE）</td></tr><tr><td>配布形式</td><td>xlsx</td><td>xlsm（マクロ有効ブック）</td></tr><tr><td>セキュリティ警告</td><td>出ない</td><td>出る</td></tr><tr><td>計算速度</td><td>数式と同等</td><td>やや遅い場合あり</td></tr><tr><td>対応バージョン</td><td>Microsoft 365のみ</td><td>VBA対応のExcel全般</td></tr><tr><td>可能な処理</td><td>数式で書ける範囲</td><td>ファイル操作・API呼出・複雑制御も可</td></tr><tr><td>デバッグ</td><td>LETの中間変数で確認</td><td>ブレークポイント・イミディエイト</td></tr><tr><td>学習コスト</td><td>Excelの数式知識のみ</td><td>VBA文法を学ぶ必要あり</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">判断基準を実務シーン別に整理すると次のとおりです。</p>



<ul class="wp-block-list"><li><strong>xlsxのまま配布したい・社内のマクロ警告を回避したい</strong> → LAMBDA</li><li><strong>計算式の延長で済む処理（税込・営業日・評価判定など）</strong> → LAMBDA</li><li><strong>Excel 2021や旧バージョンのユーザーがいる</strong> → VBA Function（LAMBDAは使えない）</li><li><strong>ファイル操作・正規表現・WEB API呼び出しが必要</strong> → VBA Function</li><li><strong>長年VBA UDFで運用していて移行コストが高い</strong> → VBA Functionを継続</li></ul>



<p class="wp-block-paragraph">VBAのFunctionプロシージャの基本については <a href="https://mashukabu.com/excel-vba-howto-use-function/">VBA Functionプロシージャの使い方</a> で詳しく解説しています。両者の使い分けを社内で標準化したい方は、まずLAMBDAで実装してみて、できない処理だけVBAに移すアプローチが現実的でしょう。</p>



<h2 class="wp-block-heading"><span id="toc30">こんなエラーが出たら：つまずきポイントと対処法</span></h2>



<p class="wp-block-paragraph">LET/LAMBDAは強力ですが、慣れないうちはエラーに遭遇します。代表的な4つのケースと対処法をまとめます。</p>



<h3 class="wp-block-heading"><span id="toc31">#NAME?エラーが出る原因と解決策</span></h3>



<p class="wp-block-paragraph"><code>#NAME?</code> エラーは、Excelが関数名や変数名を認識できないときに発生します。主な原因は3つです。</p>



<ol class="wp-block-list"><li><strong>バージョン非対応</strong>: Excel 2019以前でLETを使うと出ます。LAMBDAはExcel 2021でも非対応なので注意してください</li><li><strong>関数名のスペルミス</strong>: <code>=LET</code> を <code>=LTE</code> などとタイプミスしている</li><li><strong>名前定義の未登録</strong>: <code>=TAX_CALC(100)</code> と呼んでも、「名前の管理」に未登録なら認識されません</li></ol>



<p class="wp-block-paragraph">対処は「バージョン確認 → スペル確認 → 名前の管理で登録状態を確認」の順で切り分けます。エラー処理を厚くしたいなら <a href="https://mashukabu.com/excel-function-howto-use-iferror/">ExcelのIFERROR関数の使い方</a> を組み合わせてください。</p>



<h3 class="wp-block-heading"><span id="toc32">#CALC!エラーが出る原因と解決策</span></h3>



<p class="wp-block-paragraph"><code>#CALC!</code> エラーは、LAMBDAをセルに書いた際に <strong>末尾の引数渡しを忘れた</strong> ときの典型エラーです。たとえば次の式はエラーになります。</p>



<pre class="wp-block-code"><code>'--- これは#CALC!エラーになる ---
=LAMBDA(temp, (5/9)*(temp-32))</code></pre>



<p class="wp-block-paragraph">セル内で即時呼び出しするには末尾に <code>(100)</code> のように引数を付けます。</p>



<pre class="wp-block-code"><code>'--- 末尾に引数を渡せば正常動作 ---
=LAMBDA(temp, (5/9)*(temp-32))(100)</code></pre>



<p class="wp-block-paragraph">なお、名前定義に登録したLAMBDAを呼び出す場合は <code>=MY_FUNC(100)</code> の形で問題ありません。</p>



<h3 class="wp-block-heading"><span id="toc33">変数名にセル参照と同名を使ったときの挙動</span></h3>



<p class="wp-block-paragraph">LETの変数名に <code>A1</code> や <code>B2</code> のような「セル参照と同名」を使うと、Excelは予期しない動作をする可能性があります。たとえば以下の式は本来意図した動作にならない恐れがあります。</p>



<pre class="wp-block-code"><code>'--- セル参照と同名はNG ---
=LET(A1, 10, A1*2)</code></pre>



<p class="wp-block-paragraph">LETの仕様上「変数名はセル参照と同名にしない」というルールがあります。<code>price</code> や <code>taxRate</code> のように <strong>意味のある名前</strong> を必ず付けてください。可読性の面でも重要です。</p>



<h3 class="wp-block-heading"><span id="toc34">LAMBDAの再帰呼び出しでスタックオーバーフロー</span></h3>



<p class="wp-block-paragraph">LAMBDAは自分自身を呼び出す「再帰」が可能ですが、停止条件を書き忘れるとExcelがフリーズします。階乗計算の例で見てみましょう。</p>



<pre class="wp-block-code"><code>'--- FACT_LAMBDA として登録するイメージ ---
=LAMBDA(n, IF(n&lt;=1, 1, n * FACT_LAMBDA(n-1)))</code></pre>



<p class="wp-block-paragraph"><code>n<=1</code> という停止条件を抜くと無限ループになり、最悪Excelが応答不能になります。再帰LAMBDAを書くときは必ず停止条件を最初に書く癖を付けてください。</p>



<h2 class="wp-block-heading"><span id="toc35">よくある質問（FAQ）</span></h2>



<p class="wp-block-paragraph">[faq q="LET関数とLAMBDA関数の最大の違いは何ですか？" a="スコープと役割が違います。LET関数は「1つのセル内だけで使える変数」を作るためのもの、LAMBDA関数は「ブック全体で使い回せるカスタム関数」を作るためのものです。LETは長い数式を整理する用途、LAMBDAは複数箇所で同じ計算ロジックを再利用する用途で使い分けます。"]<br>[faq q="Excel 2019や2016ではLET・LAMBDAは使えますか？" a="使えません。LET関数はExcel 2021 / Microsoft 365以降が必須、LAMBDA関数はMicrosoft 365専用です。Excel 2019以前のバージョンで開くと#NAME?エラーになります。社外に共有する場合は、相手のExcelバージョンを必ず確認してください。"]<br>[faq q="LAMBDA関数で作ったカスタム関数は他のブックでも使えますか？" a="そのままでは使えません。LAMBDA関数は「名前の管理」に登録するため、登録したブック内でのみ有効です。他のブックでも使うには、各ブックで同じLAMBDA式を再登録するか、テンプレートブックを共有して全員にコピーしてもらう運用が一般的です。"]<br>[faq q="LAMBDA関数にマクロのセキュリティ警告は出ますか？" a="出ません。LAMBDAは数式の延長なので、ファイル形式もxlsxのままで配布できます。VBAのユーザー定義関数（UDF）と違い、開いた人にマクロ警告が出ないため、社内ポリシーでマクロが制限されている環境でも安心して配布できます。"]<br>[faq q="LET関数の変数名に使ってはいけないものはありますか？" a="4つの制約があります。1. 数字や記号で始まる名前（例: 1stValue）、2. スペースを含む名前、3. A1やB2などのセル参照と同じ名前、4. TRUE・FALSE・NULLなどの予約語、これらは使えません。安全な命名は「英小文字で始まる意味のある名前（例: result, taxRate, totalPrice）」です。"]<br>[faq q="LAMBDAとVBAのユーザー定義関数(UDF)はどちらを使うべきですか？" a="数式で書ける範囲ならLAMBDAを優先するのがおすすめです。xlsxのまま配布でき、セキュリティ警告も出ないからです。ただしファイル操作・正規表現・WEB API呼び出しなど数式で書けない処理はVBA UDFが必要です。Microsoft 365が使えない環境ではVBA UDFを選びましょう。"]</p>



<h2 class="wp-block-heading"><span id="toc36">まとめ：LETは今日から、LAMBDAは次のステップで</span></h2>



<p class="wp-block-paragraph">LET関数とLAMBDA関数は、ExcelをVBAなしで「自分仕様」にカスタマイズできる強力な仕組みです。最後に本記事の要点を整理します。</p>



<ul class="wp-block-list"><li><strong>LET関数</strong>: セル内で変数を定義し、長い数式を整理する。Excel 2021以降で利用可</li><li><strong>LAMBDA関数</strong>: ブック全体で再利用できるカスタム関数を定義する。Microsoft 365専用</li><li><strong>使い分け</strong>: 1セル完結ならLET、複数箇所で繰り返すならLAMBDA</li><li><strong>組み合わせ</strong>: LAMBDA内部でLETを使えば、関数の内部ロジックを段階的に書けて可読性が大幅向上</li><li><strong>エラー対処</strong>: <code>#NAME?</code> はバージョン・スペル・名前登録、<code>#CALC!</code> はLAMBDA末尾の引数渡し忘れ</li><li><strong>VBAとの違い</strong>: xlsxのまま配布可・セキュリティ警告なし・ただしMicrosoft 365専用</li></ul>



<p class="wp-block-paragraph">まずは今日からLETを試してみてください。長いVLOOKUP+IFERRORの数式を <code>result</code> という変数1つで括るだけで、メンテナンス性が大きく変わります。</p>



<p class="wp-block-paragraph">LETの操作に慣れたら、次のステップとしてLAMBDA関数を1つだけ「名前の管理」に登録してみましょう。消費税計算でも単価計算でもかまいません。1つでも自作の関数がブックに登録できると、Excelとの付き合い方そのものが変わります。</p>



<p class="wp-block-paragraph">VBAに踏み込まなくても、数式だけでここまで自動化できる時代になりました。<strong>「数式に名前を付ける」</strong> という小さな一歩から、メンテナンスしやすく再利用可能なExcel運用を始めていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc37">関連記事で次のステップに進む</span></h3>



<p class="wp-block-paragraph">LET/LAMBDAを使いこなすうえで、合わせて押さえておきたい関数記事を紹介します。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">ExcelのVLOOKUP関数の使い方</a>：LET実務例①で必須の検索関数</li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">ExcelのIF関数の使い方</a>：複合条件をLETで整理する前に基礎を確認</li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">ExcelのIFERROR関数の使い方</a>：エラー処理の標準パターン</li><li><a href="https://mashukabu.com/excel-function-howto-use-map/">ExcelのMAP関数の使い方</a>：LAMBDAとの相棒、配列一括処理の要</li><li><a href="https://mashukabu.com/excel-vba-howto-use-function/">VBA Functionプロシージャの使い方</a>：LAMBDAで足りないケースの代替手段</li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数一覧【機能別】</a>：他の便利関数を機能別に俯瞰</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-let-lambda-function-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのLAMBDA関数の使い方｜カスタム関数を自作する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-lambda/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-lambda/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 04 Apr 2026 04:32:21 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[カスタム関数]]></category>
		<category><![CDATA[ヘルパー関数]]></category>
		<category><![CDATA[名前の管理]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5772</guid>

					<description><![CDATA[ExcelのLAMBDA関数でVBA不要のカスタム関数を作る方法を解説。基本構文から名前の管理への登録手順、税込計算などの実務例、MAP・REDUCE等のヘルパー関数との組み合わせ、よくあるエラー対処法まで紹介しています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「毎回同じ長い数式を組み直すのが面倒&#8230;」。複数のシートで同じ計算ロジックをコピペしていませんか。</p>



<p class="wp-block-paragraph">数式が長くなるほど読みにくくなりますし、修正するときは使っている場所をすべて直す必要があります。</p>



<p class="wp-block-paragraph">そんな悩みを解決するのが <strong>LAMBDA関数</strong> です。よく使う計算ロジックに名前を付けて、自作の関数として使い回せるようになります。この記事ではExcel LAMBDA関数の使い方を実例付きで紹介します。基本の書き方から「名前の管理」への登録、MAP・REDUCEとの連携まで解説します。</p>



<p class="wp-block-paragraph">この記事は次のような人におすすめ</p>



<ul class="wp-block-list"><li>同じ計算式を何度もコピペするのをやめたい</li><li>VBAを使わずにオリジナルの関数を作りたい</li><li>MAP関数やREDUCE関数との組み合わせ方を知りたい</li></ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">LAMBDA関数とは？</a></li><li><a href="#toc2" tabindex="0">LAMBDA関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">LAMBDA関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">税込価格を計算する</a></li><li><a href="#toc7" tabindex="0">2つの引数を使う</a></li><li><a href="#toc8" tabindex="0">セル内で単体テストする</a></li></ol></li><li><a href="#toc9" tabindex="0">「名前の管理」に登録する方法</a><ol><li><a href="#toc10" tabindex="0">登録手順</a></li></ol></li><li><a href="#toc11" tabindex="0">LAMBDA関数の実務活用パターン</a><ol><li><a href="#toc12" tabindex="0">MAP関数と組み合わせて配列を一括変換する</a></li><li><a href="#toc13" tabindex="0">REDUCE関数と組み合わせて集約する</a></li><li><a href="#toc14" tabindex="0">BYROW関数と組み合わせて行ごとに処理する</a></li><li><a href="#toc15" tabindex="0">MAKEARRAY関数で配列を生成する</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc17" tabindex="0">Googleスプレッドシートとの違い</a></li><li><a href="#toc18" tabindex="0">まとめ</a><ol><li><a href="#toc19" tabindex="0">関連記事</a></li><li><a href="#toc20" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">LAMBDA関数とは？</span></h2>



<p class="wp-block-paragraph">LAMBDA（読み方: らむだ）関数は、<strong>独自の計算ロジックを関数として定義できる関数</strong>です。名前はプログラミング用語の「ラムダ式（無名関数）」からきています。</p>



<p class="wp-block-paragraph">たとえば「税込価格を計算する関数」がすぐに作れます。「2つの値を特定ルールで結合する関数」なども定義できます。</p>



<p class="wp-block-paragraph">LAMBDA関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>繰り返し使う計算ロジックを1つの関数にまとめる</li><li>「名前の管理」に登録すれば、SUM関数やIF関数と同じように呼び出せる</li><li>MAP・REDUCE・BYROWなどと組み合わせて高度な配列処理ができる</li><li>VBAを使わずに自作関数を作れる</li></ul>



<p class="wp-block-paragraph">対応バージョンはMicrosoft 365、Excel for the web、Excel 2024です。Excel 2021以前では使えません。</p>



<h2 class="wp-block-heading"><span id="toc2">LAMBDA関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=LAMBDA(引数名1, [引数名2, ...], 数式本体)(値1, [値2, ...])</code></pre>



<p class="wp-block-paragraph">LAMBDA関数は2つのパートに分かれています。定義部分の <code>LAMBDA(...)</code> と、値を渡す <code>(値)</code> です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>引数名1</td><td>必須</td><td>数式本体で使う変数の名前（好きな名前を付けられる）</td></tr><tr><td>引数名2〜</td><td>省略可</td><td>2つ目以降の引数。最大253個まで</td></tr><tr><td>数式本体</td><td>必須</td><td>引数名を使った計算式。必ず最後の引数として書く</td></tr><tr><td>(値1, 値2, &#8230;)</td><td>必須</td><td>定義した引数に渡す実際の値やセル参照</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数名はセル参照（A1やB2）や関数名（SUMやIFなど）と被らなければ自由に付けられます。<code>price</code> や <code>x</code> など、わかりやすい名前にするのがおすすめです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>LAMBDA関数の最後の引数が必ず「数式本体」になります。引数が1つなら <code>LAMBDA(x, x<em>1.1)</code> のように、<code>x</code> が引数名で <code>x</em>1.1</code> が数式本体です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">LAMBDA関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">まずはセルに直接書いて動きを確認してみましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">税込価格を計算する</span></h3>



<p class="wp-block-paragraph">税抜き価格から税込価格を計算するLAMBDA関数です。</p>



<pre class="wp-block-code"><code>=LAMBDA(price, price*1.1)(A2)</code></pre>



<p class="wp-block-paragraph"><code>price</code> という引数名を定義し、<code>price*1.1</code> で10%の消費税を加算しています。最後の <code>(A2)</code> でセルA2の値を渡しています。A2に「1000」が入っていれば、結果は「1100」です。</p>



<h3 class="wp-block-heading"><span id="toc7">2つの引数を使う</span></h3>



<p class="wp-block-paragraph">姓と名をスペースでつなげてフルネーム表示する例です。</p>



<pre class="wp-block-code"><code>=LAMBDA(sei, mei, sei&amp;&quot; &quot;&amp;mei)(A2, B2)</code></pre>



<p class="wp-block-paragraph">A2に「田中」、B2に「太郎」が入っていれば「田中 太郎」を返します。引数名を2つ定義し、値も2つ渡しているのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc8">セル内で単体テストする</span></h3>



<p class="wp-block-paragraph">LAMBDA関数はセルに直接書いてすぐに動作確認できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td><code>=LAMBDA(x, x*2)(5)</code></td><td><strong>10</strong></td><td>5を2倍</td></tr><tr><td><code>=LAMBDA(x, y, x+y)(3, 7)</code></td><td><strong>10</strong></td><td>3+7</td></tr><tr><td><code>=LAMBDA(x, IF(x>=60,"合格","不合格"))(75)</code></td><td><strong>合格</strong></td><td>条件分岐</td></tr><tr><td><code>=LAMBDA(txt, UPPER(txt))("hello")</code></td><td><strong>HELLO</strong></td><td>文字列変換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">セル内で動作を確認してから「名前の管理」に登録する、という流れがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc9">「名前の管理」に登録する方法</span></h2>



<p class="wp-block-paragraph">LAMBDA関数の真価は「名前の管理」に登録したときに発揮されます。登録すれば、SUM関数やVLOOKUP関数と同じ感覚で呼び出せるようになります。</p>



<h3 class="wp-block-heading"><span id="toc10">登録手順</span></h3>



<ol class="wp-block-list"><li>「<strong>数式</strong>」タブ →「<strong>名前の管理</strong>」をクリックします</li><li>「<strong>新規作成</strong>」をクリックします</li><li>以下の項目を入力します</li></ol>



<ul class="wp-block-list"><li><strong>名前</strong>: 関数名（例: <code>TAX_INCL</code>）</li><li><strong>スコープ</strong>: ブック（デフォルトのまま）</li><li><strong>コメント</strong>: 「税抜価格から税込価格を計算」など機能説明</li><li><strong>参照範囲</strong>: <code>=LAMBDA(price, ROUND(price*1.1,0))</code></li></ul>



<ol class="wp-block-list"><li>「<strong>OK</strong>」をクリックして保存します</li></ol>



<p class="wp-block-paragraph">登録が完了すると、どのセルでも次のように呼び出せます。</p>



<pre class="wp-block-code"><code>=TAX_INCL(A2)</code></pre>



<p class="wp-block-paragraph">定義を1か所直すだけで、使っているすべてのセルに反映されます。税率が変わっても修正は1回で済むのが大きなメリットです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Excelの「名前の管理」で登録した関数は、オートコンプリート（入力候補）には表示されません。関数名を正確に入力する必要があるので、覚えやすい名前を付けておきましょう。Macの場合は「数式」タブ →「名前の定義」から登録できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">LAMBDA関数の実務活用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc12">MAP関数と組み合わせて配列を一括変換する</span></h3>



<p class="wp-block-paragraph">MAP関数を使えば、配列の各値にLAMBDA関数を適用できます。</p>



<pre class="wp-block-code"><code>=MAP(A2:A10, LAMBDA(price, ROUND(price*1.1,0)))</code></pre>



<p class="wp-block-paragraph">A2:A10の全セルに対して税込計算を一括で適用します。結果はスピル（自動展開）で複数行に表示されるので、1つのセルに数式を入れるだけで完了です。</p>



<h3 class="wp-block-heading"><span id="toc13">REDUCE関数と組み合わせて集約する</span></h3>



<p class="wp-block-paragraph">REDUCE関数は配列を1つの値にまとめる関数です。LAMBDAで集約のロジックを定義します。</p>



<pre class="wp-block-code"><code>=REDUCE(0, A2:A10, LAMBDA(acc, val, IF(val&gt;=1000, acc+val, acc)))</code></pre>



<p class="wp-block-paragraph">この例では1,000以上の値だけを合計しています。SUMIFSでは書きにくい複雑な条件でも、LAMBDAの中身を自由に書けるので柔軟に対応できます。</p>



<h3 class="wp-block-heading"><span id="toc14">BYROW関数と組み合わせて行ごとに処理する</span></h3>



<p class="wp-block-paragraph">BYROW関数は各行に対してLAMBDAを適用します。</p>



<pre class="wp-block-code"><code>=BYROW(A2:C10, LAMBDA(row, MAX(row)-MIN(row)))</code></pre>



<p class="wp-block-paragraph">各行の最大値と最小値の差（レンジ）を一括で計算できます。行単位の集計処理が1つの数式で完結するのが便利なポイントです。</p>



<h3 class="wp-block-heading"><span id="toc15">MAKEARRAY関数で配列を生成する</span></h3>



<p class="wp-block-paragraph">MAKEARRAY関数はLAMBDAで計算した結果から配列を作ります。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(9, 9, LAMBDA(r, c, r*c))</code></pre>



<p class="wp-block-paragraph">9行9列の九九の表を1つの数式で作れます。テスト用のダミーデータを用意したいときにも使えます。</p>



<h2 class="wp-block-heading"><span id="toc16">よくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#CALC! エラー</td><td>セル内でLAMBDAを定義したが値を渡していない</td><td><code>=LAMBDA(x, x*2)</code> の末尾に <code>(A2)</code> を付けて値を渡す</td></tr><tr><td>#VALUE! エラー</td><td>引数の数が定義と一致しない</td><td>引数を2つ定義したなら値も2つ渡す</td></tr><tr><td>#VALUE! エラー</td><td>パラメータが253個を超えている</td><td>引数は253個以内に収める</td></tr><tr><td>#NUM! エラー</td><td>再帰呼び出しが深すぎる</td><td>基底条件（IFなどで再帰を止める条件）を見直す</td></tr><tr><td>#NAME? エラー</td><td>引数名にセル参照（A1等）を使っている</td><td><code>x</code>、<code>val</code>、<code>price</code> などセル参照以外の名前にする</td></tr><tr><td>数式本体が実行されない</td><td>「名前の管理」に登録せずセル内で <code>(値)</code> を付け忘れた</td><td><code>=LAMBDA(x, x*2)(A2)</code> と末尾に値を渡す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラー値の詳細は<a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧</a>も参考にしてください。エラーを非表示にしたい場合は<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>が便利です。</p>



<h2 class="wp-block-heading"><span id="toc17">Googleスプレッドシートとの違い</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートにもLAMBDA関数があります。構文は同じですが、登録方法に大きな違いがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>LAMBDA関数の構文</td><td><code>=LAMBDA(引数, 数式)(値)</code></td><td><code>=LAMBDA(引数, 数式)(値)</code></td></tr><tr><td>カスタム関数の登録</td><td>「名前の管理」（数式タブ）</td><td>「名前付き関数」（データメニュー）</td></tr><tr><td>登録時の引数説明</td><td>設定不可</td><td>引数ごとに説明文を設定可能</td></tr><tr><td>オートコンプリート</td><td>非対応</td><td>対応（関数名を入力すると候補表示）</td></tr><tr><td>対応バージョン</td><td>Microsoft 365 / Excel for the web / Excel 2024</td><td>全アカウント</td></tr><tr><td>ヘルパー関数</td><td>MAP, REDUCE, SCAN, BYROW, BYCOL, MAKEARRAY, ISOMITTED（7種）</td><td>同じ7種類</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">構文自体は同じなので、数式をそのままコピーして使えます。ただし登録方法が異なるため、ブック間の移行では再登録が必要です。</p>



<p class="wp-block-paragraph">カスタム関数の登録・管理のしやすさではGoogleスプレッドシートが有利です。GUIで登録でき、オートコンプリートにも対応しています。一方、ExcelはVBAとの連携や大規模データの処理速度に強みがあります。</p>



<h2 class="wp-block-heading"><span id="toc18">まとめ</span></h2>



<p class="wp-block-paragraph">LAMBDA関数は、繰り返し使う計算ロジックをカスタム関数として定義できる関数です。</p>



<ul class="wp-block-list"><li>構文は <code>=LAMBDA(引数名, 数式本体)(値)</code> で、最後の引数が数式本体</li><li>「名前の管理」に登録すると、SUM関数と同じように呼び出せる</li><li>MAP・REDUCE・BYROW・MAKEARRAY等と組み合わせて配列処理が可能</li><li>引数名にはセル参照や関数名と被らない名前を使う</li><li>対応バージョンはMicrosoft 365、Excel for the web、Excel 2024</li><li>Googleスプレッドシートにも同じ構文があるが、登録方法が異なる</li></ul>



<p class="wp-block-paragraph">まずは <code>=LAMBDA(x, x*2)(5)</code> でLAMBDA関数の動きを確認するところから始めてみてください。「名前の管理」への登録まで進めば、自作関数の便利さを実感できるはずです。</p>



<h3 class="wp-block-heading"><span id="toc19">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-filter/">FILTER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-unique/">UNIQUE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li></ul>



<h3 class="wp-block-heading"><span id="toc20">関数一覧</span></h3>



<p class="wp-block-paragraph">Excel関数の一覧は下記の記事で確認できます。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数 機能別一覧</a></li></ul>



<p class="wp-block-paragraph">エラー値が表示される場合は、下記の記事も参考にしてみてください。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-lambda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのLAMBDA関数の使い方｜カスタム関数定義</title>
		<link>https://mashukabu.com/spreadsheet-lambda-function/</link>
					<comments>https://mashukabu.com/spreadsheet-lambda-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 22 Mar 2026 01:12:26 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LAMBDA]]></category>
		<category><![CDATA[Sheets独自]]></category>
		<category><![CDATA[カスタム関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[名前付き関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4971</guid>

					<description><![CDATA[GoogleスプレッドシートのLAMBDA関数の使い方を基本から解説。構文・引数の書き方、名前付き関数への登録方法、MAP・REDUCE・BYROWとの組み合わせ、Excelとの違いまで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「この計算、毎回同じ数式を組み直すのが面倒&#8230;」。スプレッドシートで複雑な数式を何度もコピペしていませんか。</p>



<p class="wp-block-paragraph">数式が長くなるほど読みにくくなりますし、修正するときは使っている場所をすべて直す必要があります。</p>



<p class="wp-block-paragraph">そんな悩みを解決するのが <strong>LAMBDA関数</strong> です。よく使う計算ロジックに名前を付けて、自作の関数として使い回せるようになります。</p>



<p class="wp-block-paragraph">この記事では、LAMBDA関数の基本構文から名前付き関数への登録、MAP・REDUCEとの連携まで実例付きで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">LAMBDA関数とは？ ── 自作関数を数式だけで作れる</a></li><li><a href="#toc2" tabindex="0">LAMBDA関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">LAMBDA関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">税込価格を計算する</a></li><li><a href="#toc7" tabindex="0">2つの引数を使う</a></li><li><a href="#toc8" tabindex="0">セル内で単体テストする</a></li></ol></li><li><a href="#toc9" tabindex="0">名前付き関数として登録する方法（Sheets独自機能）</a><ol><li><a href="#toc10" tabindex="0">登録手順</a></li><li><a href="#toc11" tabindex="0">名前付き関数のメリット</a></li></ol></li><li><a href="#toc12" tabindex="0">LAMBDA関数の実践的な使い方・応用例</a><ol><li><a href="#toc13" tabindex="0">MAP関数と組み合わせて配列を一括変換する</a></li><li><a href="#toc14" tabindex="0">REDUCE関数と組み合わせて集約する</a></li><li><a href="#toc15" tabindex="0">BYROW関数と組み合わせて行ごとに処理する</a></li><li><a href="#toc16" tabindex="0">BYCOL関数と組み合わせて列ごとに処理する</a></li><li><a href="#toc17" tabindex="0">SCAN関数と組み合わせて累積計算する</a></li><li><a href="#toc18" tabindex="0">MAKEARRAY関数と組み合わせて配列を生成する</a></li></ol></li><li><a href="#toc19" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc20" tabindex="0">Excelとの違い（Excel LAMBDAとの比較）</a></li><li><a href="#toc21" tabindex="0">まとめ</a><ol><li><a href="#toc22" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">LAMBDA関数とは？ ── 自作関数を数式だけで作れる</span></h2>



<p class="wp-block-paragraph">LAMBDA関数（読み方: らむだ）は、<strong>独自の計算ロジックを関数として定義できる関数</strong>です。</p>



<p class="wp-block-paragraph">名前はプログラミング用語の「ラムダ式（無名関数）」からきています。</p>



<p class="wp-block-paragraph">たとえば「税込価格を計算する関数」や「姓と名をつなげてフルネーム表示する関数」など、よく使う処理をひとまとめにできます。</p>



<p class="wp-block-paragraph">LAMBDA関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>繰り返し使う計算ロジックを1つの関数にまとめる</li><li>「名前付き関数」として登録すれば、SUM関数やIF関数と同じように呼び出せる</li><li>MAP・REDUCE・BYROWなどと組み合わせて高度な配列処理ができる</li><li>GAS（Google Apps Script）を使わずに自作関数を作れる</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>LAMBDA関数はGoogleスプレッドシートの全アカウントで使えます。ExcelにもLAMBDA関数はありますが、Sheetsの「名前付き関数」との連携は独自機能です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">LAMBDA関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=LAMBDA(引数名1, [引数名2, ...], 数式本体)(値1, [値2, ...])</code></pre>



<p class="wp-block-paragraph">LAMBDA関数は2つのパートに分かれています。定義部分の <code>LAMBDA(...)</code> と、値を渡す <code>(値)</code> です。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>引数名1</td><td>必須</td><td>数式本体で使う変数の名前（好きな名前を付けられる）</td></tr><tr><td>引数名2〜</td><td>任意</td><td>2つ目以降の引数。最大で253個まで</td></tr><tr><td>数式本体</td><td>必須</td><td>引数名を使った計算式。最後の引数が数式本体になる</td></tr><tr><td>(値1, 値2, &#8230;)</td><td>必須</td><td>定義した引数に渡す実際の値やセル参照</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数名はセル参照（A1やB2）以外なら自由に名前を付けられます。<code>price</code> や <code>x</code> など、わかりやすい名前にしておくと読みやすくなりますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LAMBDA関数の最後の引数が必ず「数式本体」になります。引数が1つなら <code>LAMBDA(x, x<em>1.1)</code> のように、xが引数名で <code>x</em>1.1</code> が数式本体です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">LAMBDA関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">まずはシンプルな例で動きを確認してみましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">税込価格を計算する</span></h3>



<p class="wp-block-paragraph">税抜き価格から税込価格を計算するLAMBDA関数です。</p>



<pre class="wp-block-code"><code>=LAMBDA(price, price*1.1)(A2)</code></pre>



<p class="wp-block-paragraph"><code>price</code> という引数名を定義し、<code>price*1.1</code> で10%の消費税を加算しています。最後の <code>(A2)</code> でA2セルの値を渡しています。</p>



<p class="wp-block-paragraph">A2に「1000」が入っていれば、結果は「1100」です。</p>



<h3 class="wp-block-heading"><span id="toc7">2つの引数を使う</span></h3>



<p class="wp-block-paragraph">姓と名をスペースでつなげてフルネーム表示する例です。</p>



<pre class="wp-block-code"><code>=LAMBDA(sei, mei, sei&amp;&quot; &quot;&amp;mei)(A2, B2)</code></pre>



<p class="wp-block-paragraph">A2に「田中」、B2に「太郎」が入っていれば「田中 太郎」を返します。</p>



<h3 class="wp-block-heading"><span id="toc8">セル内で単体テストする</span></h3>



<p class="wp-block-paragraph">LAMBDA関数はセルに直接書いてテストできます。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td><code>=LAMBDA(x, x*2)(5)</code></td><td><strong>10</strong></td><td>5を2倍</td></tr><tr><td><code>=LAMBDA(x, y, x+y)(3, 7)</code></td><td><strong>10</strong></td><td>3+7</td></tr><tr><td><code>=LAMBDA(x, IF(x>=60,"合格","不合格"))(75)</code></td><td><strong>合格</strong></td><td>条件分岐</td></tr><tr><td><code>=LAMBDA(txt, UPPER(txt))("hello")</code></td><td><strong>HELLO</strong></td><td>文字列変換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">セル内で動作を確認してから名前付き関数に登録する、という流れがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc9">名前付き関数として登録する方法（Sheets独自機能）</span></h2>



<p class="wp-block-paragraph">LAMBDA関数の真価は「名前付き関数」として登録したときに発揮されます。登録すれば、SUM関数やVLOOKUP関数と同じように、どのセルからでも呼び出せるようになります。</p>



<h3 class="wp-block-heading"><span id="toc10">登録手順</span></h3>



<ol class="wp-block-list"><li>メニューから「<strong>データ</strong>」→「<strong>名前付き関数</strong>」を選択します</li><li>「<strong>新しい関数を追加</strong>」をクリックします</li><li>以下の項目を入力します</li></ol>



<ul class="wp-block-list"><li><strong>関数名</strong>: <code>TAX_INCL</code>（半角英字・アンダースコアのみ）</li><li><strong>数式の定義</strong>: <code>=LAMBDA(price, ROUND(price*1.1))</code></li><li><strong>引数のプレースホルダ</strong>: <code>price</code></li><li><strong>引数の説明</strong>: 「税抜き価格」</li><li><strong>関数の説明</strong>: 「税抜き価格から税込価格を計算します」</li></ul>



<ol class="wp-block-list"><li>「<strong>次へ</strong>」→「<strong>作成</strong>」をクリックします</li></ol>



<p class="wp-block-paragraph">登録が完了すると、どのセルでも次のように呼び出せます。</p>



<pre class="wp-block-code"><code>=TAX_INCL(A2)</code></pre>



<p class="wp-block-paragraph">数式バーに <code>=TAX</code> と入力すると、オートコンプリートに表示されるので便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">名前付き関数のメリット</span></h3>



<ul class="wp-block-list"><li><strong>可読性</strong>: <code>=LAMBDA(p, ROUND(p*1.1))(A2)</code> より <code>=TAX_INCL(A2)</code> のほうがわかりやすい</li><li><strong>メンテナンス性</strong>: 税率が変わっても定義を1か所直すだけ</li><li><strong>共有</strong>: 同じスプレッドシートを使うメンバー全員が同じ関数を使える</li><li><strong>オートコンプリート</strong>: 入力補完と引数の説明が表示される</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>名前付き関数はスプレッドシートファイルごとに保存されます。別のファイルで使いたい場合は、テンプレートシートを複製するか、同じ定義を再登録してください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc12">LAMBDA関数の実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">MAP関数と組み合わせて配列を一括変換する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-map-function/">MAP関数</a>を使えば、配列の各値にLAMBDA関数を適用できます。</p>



<pre class="wp-block-code"><code>=MAP(A2:A10, LAMBDA(price, ROUND(price*1.1)))</code></pre>



<p class="wp-block-paragraph">A2:A10の全セルに対して税込計算を一括で適用します。結果は配列として返されるので、1つのセルに数式を入れるだけで複数行に結果が展開されます。</p>



<h3 class="wp-block-heading"><span id="toc14">REDUCE関数と組み合わせて集約する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-reduce-function/">REDUCE関数</a>は配列を1つの値にまとめる関数です。LAMBDAで集約ロジックを定義します。</p>



<pre class="wp-block-code"><code>=REDUCE(0, A2:A10, LAMBDA(acc, val, acc + val))</code></pre>



<p class="wp-block-paragraph">この例はSUM関数と同じ動作ですが、LAMBDAの中身を変えれば条件付き合計なども自由に作れます。</p>



<pre class="wp-block-code"><code>=REDUCE(0, A2:A10, LAMBDA(acc, val, IF(val&gt;=1000, acc+val, acc)))</code></pre>



<p class="wp-block-paragraph">1,000以上の値だけを合計する例です。SUMIFSでは書きにくい複雑な条件にも対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">BYROW関数と組み合わせて行ごとに処理する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-byrow-function/">BYROW関数</a>は各行に対してLAMBDAを適用します。</p>



<pre class="wp-block-code"><code>=BYROW(A2:C10, LAMBDA(row, MAX(row)-MIN(row)))</code></pre>



<p class="wp-block-paragraph">各行の最大値と最小値の差（レンジ）を一括で計算します。行単位の集計処理が1つの数式で完結します。</p>



<h3 class="wp-block-heading"><span id="toc16">BYCOL関数と組み合わせて列ごとに処理する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-bycol-function/">BYCOL関数</a>は列単位でLAMBDAを適用します。</p>



<pre class="wp-block-code"><code>=BYCOL(A2:D10, LAMBDA(col, AVERAGE(col)))</code></pre>



<p class="wp-block-paragraph">各列の平均値を一括で計算できます。</p>



<h3 class="wp-block-heading"><span id="toc17">SCAN関数と組み合わせて累積計算する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-scan-function/">SCAN関数</a>はREDUCEと似ていますが、中間値をすべて配列で返します。</p>



<pre class="wp-block-code"><code>=SCAN(0, A2:A10, LAMBDA(acc, val, acc + val))</code></pre>



<p class="wp-block-paragraph">累計を行ごとに表示したいときに便利です。ランニングトータル（累積合計）を1つの数式で実現できます。</p>



<h3 class="wp-block-heading"><span id="toc18">MAKEARRAY関数と組み合わせて配列を生成する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-makearray-function/">MAKEARRAY関数</a>はLAMBDAで計算した結果から配列を生成します。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(9, 9, LAMBDA(row, col, row*col))</code></pre>



<p class="wp-block-paragraph">9行9列の九九の表を1つの数式で作れます。</p>



<h2 class="wp-block-heading"><span id="toc19">よくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">LAMBDA関数で「思った結果にならない」ケースをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#NAME? エラー</td><td>関数名のタイポ、または引数名にセル参照（A1等）を使っている</td><td>引数名はセル参照以外の名前にする。<code>x</code>、<code>val</code>、<code>price</code> など</td></tr><tr><td>#N/A エラー</td><td>定義した引数の数と渡した値の数が一致していない</td><td>引数2つなら値も2つ渡す。<code>LAMBDA(x,y, x+y)(1,2)</code></td></tr><tr><td>#VALUE! エラー</td><td>数式本体の中で型が合わない演算をしている</td><td>文字列に対して算術演算をしていないか確認する</td></tr><tr><td>#REF! エラー</td><td>名前付き関数の定義で参照しているセルが削除された</td><td>名前付き関数の定義を開いて参照先を修正する</td></tr><tr><td>数式本体が実行されない</td><td>LAMBDA定義の後に <code>(値)</code> を付け忘れている</td><td><code>=LAMBDA(x, x<em>2)</code> ではなく <code>=LAMBDA(x, x</em>2)(A2)</code> と書く</td></tr><tr><td>引数名が反映されない</td><td>引数名に予約語（SUM、IFなど）を使っている</td><td>関数名と被らない名前にする</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LAMBDA関数の引数名に使えるのは、セル参照や既存の関数名と被らない文字列です。迷ったら <code>x</code>、<code>y</code>、<code>val</code> のようなシンプルな名前が無難ですよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc20">Excelとの違い（Excel LAMBDAとの比較）</span></h2>



<p class="wp-block-paragraph">ExcelにもLAMBDA関数がありますが、登録方法とヘルパー関数に違いがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>Googleスプレッドシート</th><th>Excel</th></tr></thead><tbody><tr><td>LAMBDA関数の構文</td><td><code>=LAMBDA(引数, 数式)(値)</code></td><td><code>=LAMBDA(引数, 数式)(値)</code></td></tr><tr><td>カスタム関数の登録方法</td><td><strong>名前付き関数</strong>（メニューから登録）</td><td><strong>名前の管理</strong>（数式タブ → 名前の管理）</td></tr><tr><td>登録時の引数説明</td><td>引数ごとに説明文を設定できる</td><td>説明文の設定不可</td></tr><tr><td>オートコンプリート</td><td>対応（関数名を入力すると候補表示）</td><td>非対応（名前の管理で定義した関数は候補に出ない）</td></tr><tr><td>対応バージョン</td><td>全アカウント</td><td>Microsoft 365 / Excel 2024 以降</td></tr><tr><td>ヘルパー関数</td><td>MAP, REDUCE, SCAN, BYROW, BYCOL, MAKEARRAY</td><td>MAP, REDUCE, SCAN, BYROW, BYCOL, MAKEARRAY</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">構文自体は同じですが、<strong>カスタム関数の登録・管理のしやすさ</strong>ではSheetsが有利です。SheetsはメニューからGUIで登録でき、オートコンプリートにも対応しています。</p>



<p class="wp-block-paragraph">Excelでは「数式」タブ →「名前の管理」→「新規作成」で名前を定義し、参照先にLAMBDA式を入力します。手順がやや複雑で、関数の説明文も付けられません。</p>



<p class="wp-block-paragraph">ヘルパー関数（MAP、REDUCEなど）はどちらも同じものが使えます。</p>



<h2 class="wp-block-heading"><span id="toc21">まとめ</span></h2>



<p class="wp-block-paragraph">LAMBDA関数は、繰り返し使う計算ロジックをカスタム関数として定義できる関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=LAMBDA(引数名, 数式本体)(値)</code> で、最後の引数が数式本体</li><li>名前付き関数に登録すると、SUM関数と同じように呼び出せる（Sheets独自機能）</li><li>MAP・REDUCE・BYROW・BYCOL・SCAN・MAKEARRAYと組み合わせて配列処理が可能</li><li>引数名にはセル参照や関数名と被らない名前を使う</li><li>Excelにも同じ構文のLAMBDA関数があるが、登録方法が異なる</li><li>GAS（Google Apps Script）を使わずにカスタム関数を作れる</li></ul>



<p class="wp-block-paragraph">まずは <code>=LAMBDA(x, x*2)(5)</code> でLAMBDA関数の動きを確認するところから始めてみてください。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-map-function/">スプレッドシートのMAP関数の使い方｜各値にLAMBDA適用</a></li><li><a href="https://mashukabu.com/spreadsheet-reduce-function/">スプレッドシートのREDUCE関数の使い方｜配列を1値に集約</a></li><li><a href="https://mashukabu.com/spreadsheet-scan-function/">スプレッドシートのSCAN関数の使い方｜累積計算の中間値を返す</a></li><li><a href="https://mashukabu.com/spreadsheet-byrow-function/">スプレッドシートのBYROW関数の使い方｜各行にLAMBDA適用</a></li><li><a href="https://mashukabu.com/spreadsheet-bycol-function/">スプレッドシートのBYCOL関数の使い方｜各列にLAMBDA適用</a></li><li><a href="https://mashukabu.com/spreadsheet-makearray-function/">スプレッドシートのMAKEARRAY関数の使い方｜計算で配列を自在に生成</a></li><li><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">スプレッドシートのARRAYFORMULA関数の使い方｜範囲に一括適用</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-lambda-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
