<?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>LAMBDA &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/lambda/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Tue, 26 May 2026 10:46:37 +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>LAMBDA &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのISOMITTED関数の使い方｜LAMBDAの省略引数を判定して既定値を返す</title>
		<link>https://mashukabu.com/excel-function-howto-use-isomitted/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-isomitted/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 07 May 2026 12:43:18 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[LAMBDA]]></category>
		<category><![CDATA[LET]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[関数自作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6584</guid>

					<description><![CDATA[ExcelのISOMITTED関数は、LAMBDAで定義した引数が省略されたかをTRUE/FALSEで返す関数です。基本構文、IFと組み合わせて省略可能引数つきカスタム関数を作る方法、LET・MAP・REDUCEとの連携、ISBLANKとの違い、対応バージョンや#CALC!エラーの原因まで実務目線で丁寧に解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「ExcelのISOMITTED関数って何ができるの？」「LAMBDAで作った自作関数の引数を省略できるようにしたい」。そんな疑問はありませんか？</p>



<p class="wp-block-paragraph">ISOMITTED関数（読み方：イズオミッティッド）は、<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数</a>の引数が省略されたかを判定する関数です。関数名は「IS（〜である）+ OMITTED(省略された)」に由来します。IFと組み合わせれば、引数を省略したときに既定値を返す「省略可能引数つきカスタム関数」をVBAなしで作れます。</p>



<p class="wp-block-paragraph">この記事では、ISOMITTED関数の基本構文と使い方を解説します。LAMBDA + IF を使った省略引数の実装、複数引数の省略チェック、<a href="https://mashukabu.com/excel-function-howto-use-let/">LET関数</a>との組み合わせ、名前付き関数としての保存、<a href="https://mashukabu.com/excel-function-howto-use-isblank/">ISBLANK関数</a>との違い、<a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE関数</a>との組み合わせ、対応バージョンやよくあるエラーの対処法、実務でよくある質問までカバーします。</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">ISOMITTED関数とは？LAMBDAの引数省略を判定するExcel関数</a><ol><li><a href="#toc2" tabindex="0">構文</a></li><li><a href="#toc3" tabindex="0">戻り値</a></li><li><a href="#toc4" tabindex="0">対応バージョン</a></li></ol></li><li><a href="#toc5" tabindex="0">ISOMITTED関数の基本的な使い方｜IFと組み合わせて既定値を返す</a><ol><li><a href="#toc6" tabindex="0">例: 税込価格を計算するカスタム関数</a></li><li><a href="#toc7" tabindex="0">例: 税率を明示的に渡す場合</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><li><a href="#toc11" tabindex="0">引数を一部だけ指定する場合</a></li><li><a href="#toc12" tabindex="0">LET と組み合わせる利点</a></li></ol></li><li><a href="#toc13" tabindex="0">実務で使える応用パターン3選</a><ol><li><a href="#toc14" tabindex="0">パターン1: 端数処理の方法を選べる丸め関数</a></li><li><a href="#toc15" tabindex="0">パターン2: 範囲の合計に「条件」と「割引率」を後付けできる関数</a></li><li><a href="#toc16" tabindex="0">パターン3: MAP・REDUCEと組み合わせて配列処理を柔軟にする</a></li></ol></li><li><a href="#toc17" tabindex="0">名前付き関数として保存して再利用する</a><ol><li><a href="#toc18" tabindex="0">保存手順</a></li><li><a href="#toc19" tabindex="0">使い方</a></li><li><a href="#toc20" tabindex="0">注意点</a></li></ol></li><li><a href="#toc21" tabindex="0">ISOMITTED関数とISBLANK関数の違い・使い分け</a><ol><li><a href="#toc22" tabindex="0">機能の比較</a></li><li><a href="#toc23" tabindex="0">動作の違い（具体例）</a></li><li><a href="#toc24" tabindex="0">使い分けの基準</a></li></ol></li><li><a href="#toc25" tabindex="0">ISOMITTED関数のよくあるエラーと対処法</a><ol><li><a href="#toc26" tabindex="0">#NAME? エラー</a></li><li><a href="#toc27" tabindex="0">#CALC! エラー</a></li><li><a href="#toc28" tabindex="0">#VALUE! エラー</a></li></ol></li><li><a href="#toc29" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc30" tabindex="0">Q1. ISOMITTEDは省略できる引数の「位置」に制限はありますか？</a></li><li><a href="#toc31" tabindex="0">Q2. ISOMITTEDをIFS関数やSWITCH関数と組み合わせても問題ありませんか？</a></li><li><a href="#toc32" tabindex="0">Q3. ISOMITTEDで判定したあと、未指定の引数に「セルの値」を既定値として使うことはできますか？</a></li></ol></li><li><a href="#toc33" tabindex="0">まとめ｜ISOMITTED関数で省略可能引数つきカスタム関数を作る</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ISOMITTED関数とは？LAMBDAの引数省略を判定するExcel関数</span></h2>



<p class="wp-block-paragraph">ISOMITTED関数は、LAMBDA関数の引数が省略されたかどうかを <code>TRUE</code> / <code>FALSE</code> で返す関数です。LAMBDA関数の中でしか意味を持たない、特殊な用途の関数です。</p>



<h3 class="wp-block-heading"><span id="toc2">構文</span></h3>



<pre class="wp-block-code"><code>=ISOMITTED(argument)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>説明</th></tr></thead><tbody><tr><td>argument</td><td>LAMBDA関数の引数。チェックしたい引数名をそのまま渡す</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">戻り値</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>状態</th><th>戻り値</th></tr></thead><tbody><tr><td>引数が省略されている</td><td><code>TRUE</code></td></tr><tr><td>引数が指定されている</td><td><code>FALSE</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは、ISOMITTEDは <strong>LAMBDA関数の引数に対してのみ</strong> 動作することです。通常のセル参照（例: <code>=ISOMITTED(A1)</code>）に対して使っても、正しい結果は返りません。<code>#CALC!</code> エラーや <code>FALSE</code> 固定になります。</p>



<h3 class="wp-block-heading"><span id="toc4">対応バージョン</span></h3>



<ul class="wp-block-list"><li>Microsoft 365（Windows / Mac / Web）</li><li>Excel 2024（永続ライセンス版）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">Excel 2021 以前のバージョンでは使えません。<code>#NAME?</code> エラーになります。LAMBDA関数自体が Microsoft 365 と Excel 2024 で導入された機能です。ISOMITTEDもそれに準じます。LAMBDAやLETの基礎から学びたい方は、<a href="https://mashukabu.com/excel-let-lambda-function-guide/">LET・LAMBDA関数で自作関数を作る完全ガイド</a>も参考になります。</p>



<h2 class="wp-block-heading"><span id="toc5">ISOMITTED関数の基本的な使い方｜IFと組み合わせて既定値を返す</span></h2>



<p class="wp-block-paragraph">ISOMITTED関数の最も基本的な使い方は、IF関数との組み合わせです。「引数が省略されたら既定値を使う」というパターンを実装します。</p>



<h3 class="wp-block-heading"><span id="toc6">例: 税込価格を計算するカスタム関数</span></h3>



<p class="wp-block-paragraph">税込価格を計算するLAMBDA関数を作ります。第2引数の税率を省略したら自動で 10% を適用する仕様にします。</p>



<pre class="wp-block-code"><code>=LAMBDA(price,rate,
  IF(ISOMITTED(rate), price*1.10, price*(1+rate))
)(1000)</code></pre>



<p class="wp-block-paragraph">第2引数 <code>rate</code> を省略しているので、<code>ISOMITTED(rate)</code> が <code>TRUE</code> を返します。IFの分岐により <code>1000*1.10 = 1100</code> が結果として返ります。</p>



<h3 class="wp-block-heading"><span id="toc7">例: 税率を明示的に渡す場合</span></h3>



<pre class="wp-block-code"><code>=LAMBDA(price,rate,
  IF(ISOMITTED(rate), price*1.10, price*(1+rate))
)(1000, 0.08)</code></pre>



<p class="wp-block-paragraph">第2引数に <code>0.08</code>（8%）を渡しています。<code>ISOMITTED(rate)</code> は <code>FALSE</code> を返すため、IFの偽の側 <code>1000*1.08 = 1080</code> が結果になります。</p>



<h3 class="wp-block-heading"><span id="toc8">結果の比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th></tr></thead><tbody><tr><td><code>=LAMBDA(price,rate, IF(ISOMITTED(rate), price<em>1.10, price</em>(1+rate)))(1000)</code></td><td>1100</td></tr><tr><td><code>=LAMBDA(price,rate, IF(ISOMITTED(rate), price<em>1.10, price</em>(1+rate)))(1000, 0.08)</code></td><td>1080</td></tr><tr><td><code>=LAMBDA(price,rate, IF(ISOMITTED(rate), price<em>1.10, price</em>(1+rate)))(1000, 0.05)</code></td><td>1050</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">このように、引数の省略可否をISOMITTEDで判定し、IFで既定値と明示値を切り替えるのが基本パターンです。</p>



<h2 class="wp-block-heading"><span id="toc9">複数の引数を省略可能にする実務パターン</span></h2>



<p class="wp-block-paragraph">複数の引数をそれぞれ独立して省略可能にすることもできます。各引数ごとにISOMITTEDで個別にチェックし、IFで分岐します。</p>



<h3 class="wp-block-heading"><span id="toc10">例: 文字列を結合するカスタム関数（区切り文字と接頭辞をオプションに）</span></h3>



<pre class="wp-block-code"><code>=LAMBDA(text1,text2,sep,prefix,
  LET(
    s, IF(ISOMITTED(sep), &quot; &quot;, sep),
    p, IF(ISOMITTED(prefix), &quot;&quot;, prefix),
    p &amp; text1 &amp; s &amp; text2
  )
)(&quot;Excel&quot;,&quot;関数&quot;)</code></pre>



<p class="wp-block-paragraph">第3引数 <code>sep</code>（区切り文字）と第4引数 <code>prefix</code>（接頭辞）を両方省略すると、半角スペース区切り・接頭辞なしで結合されます。結果は <code>Excel 関数</code> になります。</p>



<h3 class="wp-block-heading"><span id="toc11">引数を一部だけ指定する場合</span></h3>



<pre class="wp-block-code"><code>=LAMBDA(text1,text2,sep,prefix,
  LET(
    s, IF(ISOMITTED(sep), &quot; &quot;, sep),
    p, IF(ISOMITTED(prefix), &quot;&quot;, prefix),
    p &amp; text1 &amp; s &amp; text2
  )
)(&quot;Excel&quot;,&quot;関数&quot;,&quot;-&quot;)</code></pre>



<p class="wp-block-paragraph">第3引数だけ <code>-</code> を指定します。結果は <code>Excel-関数</code> になります。第4引数は省略のままなので、接頭辞は付きません。</p>



<h3 class="wp-block-heading"><span id="toc12">LET と組み合わせる利点</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-let/">LET関数</a>で中間変数（<code>s</code>, <code>p</code>）を定義することで、IFの分岐結果を一度だけ計算して再利用できます。可読性も上がるため、LAMBDA + ISOMITTEDの組み合わせではLETを併用するのが定石です。</p>



<h2 class="wp-block-heading"><span id="toc13">実務で使える応用パターン3選</span></h2>



<p class="wp-block-paragraph">ISOMITTEDは、ちょっとした自作関数を「使いやすく」するのに非常に有効です。実務でよく使う応用パターンを3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン1: 端数処理の方法を選べる丸め関数</span></h3>



<p class="wp-block-paragraph">金額計算で「四捨五入・切り上げ・切り捨て」を切り替えたい場面は多いです。第2引数を省略したら四捨五入、<code>"up"</code> / <code>"down"</code> を指定したらそれぞれ切り上げ・切り捨てにする関数を作ります。</p>



<pre class="wp-block-code"><code>=LAMBDA(value,mode,
  LET(
    m, IF(ISOMITTED(mode), &quot;round&quot;, mode),
    IF(m=&quot;up&quot;, ROUNDUP(value,0),
      IF(m=&quot;down&quot;, ROUNDDOWN(value,0), ROUND(value,0)))
  )
)(1234.5,&quot;up&quot;)</code></pre>



<p class="wp-block-paragraph"><code>1234.5</code> を切り上げて <code>1235</code> を返します。省略時は四捨五入になるので、普段使いは <code>=丸め(1234.5)</code> で済みます。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン2: 範囲の合計に「条件」と「割引率」を後付けできる関数</span></h3>



<p class="wp-block-paragraph">販売データから合計金額を出すとき、「特定の商品だけ集計したい」「割引率を後から差し込みたい」というニーズがあります。両方を省略可能にしておくと、1つの関数で複数のレポートに使い回せます。</p>



<pre class="wp-block-code"><code>=LAMBDA(amounts,product_col,product_name,discount,
  LET(
    base, IF(ISOMITTED(product_col), SUM(amounts),
              SUMIF(product_col, product_name, amounts)),
    rate, IF(ISOMITTED(discount), 0, discount),
    base * (1 - rate)
  )
)(B2:B100, A2:A100, &quot;Excel本&quot;, 0.1)</code></pre>



<p class="wp-block-paragraph">商品列・商品名を省略すれば全合計、指定すれば商品別合計、さらに割引率を渡せば適用後の金額が出ます。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン3: MAP・REDUCEと組み合わせて配列処理を柔軟にする</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE関数</a>に渡すLAMBDA内でもISOMITTEDは使えます。たとえば「配列の各要素に係数をかけるが、係数を省略したら何もしない」関数です。</p>



<pre class="wp-block-code"><code>=LAMBDA(arr,factor,
  MAP(arr, LAMBDA(x,
    IF(ISOMITTED(factor), x, x*factor)
  ))
)(A1:A5, 2)</code></pre>



<p class="wp-block-paragraph"><code>A1:A5</code> の各値を2倍にして返します。第2引数を省略すれば元の値をそのまま返すので、テスト用と本番用で同じ関数が使えます。配列全体をスキャンするなら<a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN関数</a>、行・列単位で処理するなら<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数</a>と組み合わせるのも有効です。</p>



<h2 class="wp-block-heading"><span id="toc17">名前付き関数として保存して再利用する</span></h2>



<p class="wp-block-paragraph">LAMBDA + ISOMITTEDで作った関数は、Excelの「名前の管理」機能で名前を付けて保存できます。保存後は普通の関数のように使えます。</p>



<h3 class="wp-block-heading"><span id="toc18">保存手順</span></h3>



<ol class="wp-block-list"><li>リボンの「数式」タブ →「名前の管理」→「新規作成」をクリック</li><li>「名前」欄に関数名を入力（例: <code>税込価格</code>）</li><li>「参照範囲」欄に LAMBDA 式を入力</li></ol>



<pre class="wp-block-code"><code>   =LAMBDA(price,rate, IF(ISOMITTED(rate), price*1.10, price*(1+rate)))</code></pre>



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



<h3 class="wp-block-heading"><span id="toc19">使い方</span></h3>



<p class="wp-block-paragraph">保存後は、ワークブック全体で次のように使えます。</p>



<pre class="wp-block-code"><code>=税込価格(1000)
=税込価格(1000, 0.08)</code></pre>



<p class="wp-block-paragraph">第2引数は省略可能です。省略時は 10%、指定時はその税率が使われます。VBAでユーザー定義関数を作る場合と比べて、配布が簡単です。ファイルに埋め込まれるため、セキュリティ警告も出ません。</p>



<h3 class="wp-block-heading"><span id="toc20">注意点</span></h3>



<ul class="wp-block-list"><li>名前付き関数はワークブック単位で保存されます。別ファイルでは使えません</li><li>共有する場合はテンプレートとして配布するか、相手にも同じ名前付き関数を作成してもらう必要があります</li><li>名前付き関数の作り方の全体像は<a href="https://mashukabu.com/excel-let-lambda-function-guide/">LET・LAMBDA関数で自作関数を作る完全ガイド</a>で詳しく紹介しています</li></ul>



<h2 class="wp-block-heading"><span id="toc21">ISOMITTED関数とISBLANK関数の違い・使い分け</span></h2>



<p class="wp-block-paragraph">ISOMITTEDと似た判定をする関数に<a href="https://mashukabu.com/excel-function-howto-use-isblank/">ISBLANK関数</a>があります。役割がまったく異なるため、混同しないよう整理しておきます。</p>



<h3 class="wp-block-heading"><span id="toc22">機能の比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>判定対象</th><th>使える場所</th></tr></thead><tbody><tr><td>ISOMITTED</td><td>LAMBDAの引数が省略されたか</td><td>LAMBDA関数の本体内のみ</td></tr><tr><td>ISBLANK</td><td>セルが空白（未入力）か</td><td>通常の数式すべて</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc23">動作の違い（具体例）</span></h3>



<p class="wp-block-paragraph">セル A1 が空白の状態で、次の自作関数を呼び出します。</p>



<pre class="wp-block-code"><code>=LAMBDA(x, IF(ISOMITTED(x), &quot;省略&quot;, &quot;指定あり&quot;))(A1)</code></pre>



<p class="wp-block-paragraph">引数 <code>x</code> には A1 の参照が渡されています。そのためISOMITTEDは <code>FALSE</code>（指定あり）を返します。A1 が空白セルでも、引数として渡されている以上「省略されていない」と判定されます。</p>



<p class="wp-block-paragraph">一方、ISBLANKで同じ判定をすると次のようになります。</p>



<pre class="wp-block-code"><code>=LAMBDA(x, IF(ISBLANK(x), &quot;空セル&quot;, &quot;値あり&quot;))(A1)</code></pre>



<p class="wp-block-paragraph">A1 が空白なら ISBLANKは <code>TRUE</code>（空セル）を返します。</p>



<h3 class="wp-block-heading"><span id="toc24">使い分けの基準</span></h3>



<ul class="wp-block-list"><li>「引数自体が渡されたか」を判定したい → ISOMITTED</li><li>「渡された引数の中身が空白か」を判定したい → ISBLANK</li></ul>



<p class="wp-block-paragraph">両方を組み合わせて「省略 or 空セルなら既定値」とすることもできます。</p>



<pre class="wp-block-code"><code>=LAMBDA(x,
  IF(OR(ISOMITTED(x), ISBLANK(x)), &quot;デフォルト値&quot;, x)
)</code></pre>



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



<p class="wp-block-paragraph">ISOMITTEDでエラーが出やすいケースと対処法をまとめます。</p>



<h3 class="wp-block-heading"><span id="toc26">#NAME? エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: ExcelのバージョンがISOMITTEDに対応していない</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365 または Excel 2024 にアップグレードします。Excel 2021 以前では使用できません。会社の環境でアップグレードできない場合は、VBAでユーザー定義関数を作る方法を検討してください。</p>



<h3 class="wp-block-heading"><span id="toc27">#CALC! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: ISOMITTEDをLAMBDAの外で使った、またはLAMBDA引数以外の値に対して使った</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: ISOMITTEDは必ずLAMBDA関数の本体内で使ってください。対象は、そのLAMBDAで定義した引数名に限定されます。</p>



<pre class="wp-block-code"><code>=ISOMITTED(A1)</code></pre>



<p class="wp-block-paragraph">このような書き方は動作しません（A1はLAMBDAの引数ではないため）。</p>



<h3 class="wp-block-heading"><span id="toc28">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: LAMBDA本体の処理が、省略された引数を計算に使ってしまっている</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: ISOMITTEDで先に分岐させ、省略時は引数を直接参照しないようにします。次の例ではエラーになります。</p>



<pre class="wp-block-code"><code>=LAMBDA(price,rate, price*(1+rate))(1000)</code></pre>



<p class="wp-block-paragraph">第2引数 <code>rate</code> を省略しているのに、本体で <code>rate</code> を計算に使っているためエラーになります。ISOMITTEDで先にチェックする形に書き換えてください。</p>



<pre class="wp-block-code"><code>=LAMBDA(price,rate, IF(ISOMITTED(rate), price*1.10, price*(1+rate)))(1000)</code></pre>



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



<h3 class="wp-block-heading"><span id="toc30">Q1. ISOMITTEDは省略できる引数の「位置」に制限はありますか？</span></h3>



<p class="wp-block-paragraph">第1引数だけ省略して第2引数を指定する、といった「途中省略」はできません。Excelの関数呼び出しは位置引数のため、後ろから順に省略するのが基本です。<code>=関数(値1,,値3)</code> のように途中の引数だけ空にすると、<code>#VALUE!</code> エラーや想定外の挙動になることがあります。実務的には「省略可能にしたい引数は末尾に並べる」のが安全な設計です。</p>



<h3 class="wp-block-heading"><span id="toc31">Q2. ISOMITTEDをIFS関数やSWITCH関数と組み合わせても問題ありませんか？</span></h3>



<p class="wp-block-paragraph">問題ありません。IFを多段にネストすると可読性が落ちるため、分岐が3つ以上ある場合はIFSやSWITCHのほうがすっきり書けます。たとえば「引数が省略 → A、<code>"high"</code> → B、<code>"low"</code> → C」のような分岐は、<code>IFS(ISOMITTED(x), A, x="high", B, x="low", C)</code> の形で素直に表現できます。</p>



<h3 class="wp-block-heading"><span id="toc32">Q3. ISOMITTEDで判定したあと、未指定の引数に「セルの値」を既定値として使うことはできますか？</span></h3>



<p class="wp-block-paragraph">できます。LAMBDA本体で、IFの真側に直接セル参照を書けば、省略時にそのセル値が使われます。たとえば <code>IF(ISOMITTED(rate), Sheet1!$B$1, rate)</code> のように書くと、<code>Sheet1!$B$1</code> に入っている既定税率が省略時の値になります。設定値を1か所にまとめておくと、後からの変更が楽になります。</p>



<h2 class="wp-block-heading"><span id="toc33">まとめ｜ISOMITTED関数で省略可能引数つきカスタム関数を作る</span></h2>



<p class="wp-block-paragraph">ExcelのISOMITTED関数は、LAMBDA関数で定義した引数が省略されたかを <code>TRUE</code> / <code>FALSE</code> で返す関数です。IF関数と組み合わせれば、引数を省略したときに既定値を返す「省略可能引数つきカスタム関数」をVBAなしで作れます。</p>



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



<ul class="wp-block-list"><li>ISOMITTEDはLAMBDAの引数に対してのみ動作する（通常セル参照には使えない）</li><li>基本パターンは <code>IF(ISOMITTED(引数), 既定値, 通常処理)</code></li><li>複数の引数を独立して省略チェックできる（<a href="https://mashukabu.com/excel-function-howto-use-let/">LET</a>と組み合わせるのが定石）</li><li><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP</a>・<a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE</a>・<a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN</a>など配列処理関数とも相性がよい</li><li>「名前の管理」で<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA</a>に名前を付ければ、再利用可能なカスタム関数になる</li><li><a href="https://mashukabu.com/excel-function-howto-use-isblank/">ISBLANK</a>との違い: ISOMITTEDは「引数が渡されたか」、ISBLANKは「中身が空白か」を判定する</li><li>対応バージョンはMicrosoft 365とExcel 2024のみ</li></ul>



<p class="wp-block-paragraph">LAMBDA関数でカスタム関数を作るとき、ISOMITTEDを使えば実用性が一段上がります。VBAに頼らずExcelだけで柔軟な自作関数を組みたい場面で活躍する関数です。ぜひ一度試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-isomitted/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのMAKEARRAY関数の使い方｜LAMBDAで配列を自由に生成する</title>
		<link>https://mashukabu.com/excel-function-howto-use-makearray/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-makearray/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 15:36:49 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[LAMBDA]]></category>
		<category><![CDATA[MAKEARRAY]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5916</guid>

					<description><![CDATA[ExcelのMAKEARRAY関数でLAMBDAを使って配列を自由に生成する方法を解説。行列番号を使った動的値生成、九九表・距離行列・三角関数テーブルなどの実務活用例、SEQUENCE/MAP/BYROW との使い分けまで完全網羅。]]></description>
										<content:encoded><![CDATA[

  <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">ExcelのMAKEARRAY関数とは？LAMBDAで配列を自由生成</a><ol><li><a href="#toc2" tabindex="0">LAMBDA関数の基本をおさらい</a></li><li><a href="#toc3" tabindex="0">対応バージョン</a></li><li><a href="#toc4" tabindex="0">MAKEARRAYが活躍する代表シーン</a></li></ol></li><li><a href="#toc5" tabindex="0">MAKEARRAY関数の書式と引数の渡し方（rows・cols・lambda）</a><ol><li><a href="#toc6" tabindex="0">基本構文</a></li><li><a href="#toc7" tabindex="0">引数の詳細</a></li><li><a href="#toc8" tabindex="0">LAMBDAに渡す2つの仮引数（r・c）</a></li><li><a href="#toc9" tabindex="0">r・c の値がどう動くか</a></li><li><a href="#toc10" tabindex="0">結果は動的配列としてスピルする</a></li></ol></li><li><a href="#toc11" tabindex="0">MAKEARRAY関数の使い方①｜基本的な配列生成（定数・連番）</a><ol><li><a href="#toc12" tabindex="0">例1：定数で埋めた配列を作る</a></li><li><a href="#toc13" tabindex="0">例2：文字列で埋めた配列を作る</a></li><li><a href="#toc14" tabindex="0">例3：1から始まる連番を縦に並べる</a></li><li><a href="#toc15" tabindex="0">例4：通し番号（左から右、上から下）</a></li></ol></li><li><a href="#toc16" tabindex="0">MAKEARRAY関数の使い方②｜行番号・列番号を使った動的な値の生成</a><ol><li><a href="#toc17" tabindex="0">例1：単位行列（対角線だけ1、他は0）</a></li><li><a href="#toc18" tabindex="0">例2：チェッカーボード（市松模様）</a></li><li><a href="#toc19" tabindex="0">例3：座標ラベルを生成する</a></li><li><a href="#toc20" tabindex="0">例4：ランダムなテストデータを生成</a></li></ol></li><li><a href="#toc21" tabindex="0">MAKEARRAY関数の応用｜実務活用例（九九表・距離行列・三角関数テーブル）</a><ol><li><a href="#toc22" tabindex="0">応用1：九九表を1関数で作る</a></li><li><a href="#toc23" tabindex="0">応用2：単位変換テーブル（kg ⇔ ポンド）</a></li><li><a href="#toc24" tabindex="0">応用3：距離行列を一発で作る</a></li><li><a href="#toc25" tabindex="0">応用4：三角関数テーブル（sin / cos / tan）</a></li><li><a href="#toc26" tabindex="0">応用5：複利計算テーブル</a></li><li><a href="#toc27" tabindex="0">応用6：ヒートマップ用のスコア行列</a></li></ol></li><li><a href="#toc28" tabindex="0">MAKEARRAY関数でよくあるエラーと対処法</a><ol><li><a href="#toc29" tabindex="0">#NAME? エラー</a></li><li><a href="#toc30" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc31" tabindex="0">#CALC! エラー</a></li><li><a href="#toc32" tabindex="0">#SPILL! エラー</a></li><li><a href="#toc33" tabindex="0">「LAMBDA関数が単独で使えない」と言われる場合</a></li></ol></li><li><a href="#toc34" tabindex="0">MAKEARRAY・SEQUENCE・MAP・BYROW/BYCOLの使い分け</a><ol><li><a href="#toc35" tabindex="0">全体比較表</a></li><li><a href="#toc36" tabindex="0">MAKEARRAY vs SEQUENCE</a></li><li><a href="#toc37" tabindex="0">MAKEARRAY vs MAP</a></li><li><a href="#toc38" tabindex="0">MAKEARRAY vs BYROW / BYCOL</a></li><li><a href="#toc39" tabindex="0">使い分けフローチャート</a></li></ol></li><li><a href="#toc40" tabindex="0">ExcelのMAKEARRAY関数 よくある質問（FAQ）</a><ol><li><a href="#toc41" tabindex="0">Q1. MAKEARRAY関数はGoogleスプレッドシートでも使えますか？</a></li><li><a href="#toc42" tabindex="0">Q2. MAKEARRAYの結果を別の関数に渡せますか？</a></li><li><a href="#toc43" tabindex="0">Q3. LAMBDA内でセル参照（A1など）は使えますか？</a></li><li><a href="#toc44" tabindex="0">Q4. MAKEARRAYで作った配列を値として固定したいときは？</a></li><li><a href="#toc45" tabindex="0">Q5. なぜLAMBDAの仮引数は2つ固定なのですか？</a></li><li><a href="#toc46" tabindex="0">Q6. 配列のサイズを動的に変えられますか？</a></li></ol></li><li><a href="#toc47" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのMAKEARRAY関数とは？LAMBDAで配列を自由生成</span></h2>



<p class="wp-block-paragraph">ExcelのMAKEARRAY関数は、指定した行数と列数の配列をゼロから生成する関数です。読み方は「メイクアレイ」。名前の由来は英語の「make（作る）＋ array（配列）」です。</p>



<p class="wp-block-paragraph">最大の特徴は、各セルの値を自分で自由に決められる点にあります。引数に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数</a>を渡し、その中で行番号と列番号に応じた計算式を書きます。九九表や単位行列、距離行列など、規則性のある配列を1つの数式で一気に生成できます。</p>



<p class="wp-block-paragraph">MAKEARRAYは「LAMBDAヘルパー関数」と呼ばれるグループの1つです。仲間には<a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数</a>があります。</p>



<p class="wp-block-paragraph">これらヘルパー関数の中で、MAKEARRAYだけが異色の存在です。他の関数はすべて「既存の配列を加工する」のが役割。一方でMAKEARRAYだけが「ゼロから配列を生み出す」役割を担います。</p>



<h3 class="wp-block-heading"><span id="toc2">LAMBDA関数の基本をおさらい</span></h3>



<p class="wp-block-paragraph">LAMBDA関数は、Excelに自作関数を持ち込むための仕組みです。書式は次のとおりです。</p>



<pre class="wp-block-code"><code>=LAMBDA(仮引数1, 仮引数2, ..., 計算式)(実引数1, 実引数2, ...)</code></pre>



<p class="wp-block-paragraph">仮引数に名前を付けて計算式の中で使えます。MAKEARRAYと組み合わせる場合は、LAMBDAを「他の関数の引数」として渡します。単独で呼び出す形にはなりません。</p>



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



<p class="wp-block-paragraph">ここではLAMBDA本体を呼び出すのはMAKEARRAYの内部処理です。利用者がカッコを付けて呼ぶ必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc3">対応バージョン</span></h3>



<p class="wp-block-paragraph">MAKEARRAY関数を使えるのは次の環境です。</p>



<ul class="wp-block-list"><li>Microsoft 365（Windows / Mac）</li><li>Excel 2021（永続ライセンス）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">Excel 2019以前では使用できません。古いバージョンで開くと <code>#NAME?</code> エラーになります。</p>



<h3 class="wp-block-heading"><span id="toc4">MAKEARRAYが活躍する代表シーン</span></h3>



<ul class="wp-block-list"><li>九九表など計算式が規則的な表をテンプレートとして作る</li><li>単位行列・対角行列など、数学的な行列を一発で生成する</li><li>ダミーデータ（連番・乱数）を一括生成してテスト用に使う</li><li>距離行列（移動コスト表）や三角関数テーブルを一気に作る</li></ul>



<h2 class="wp-block-heading"><span id="toc5">MAKEARRAY関数の書式と引数の渡し方（rows・cols・lambda）</span></h2>



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



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



<pre class="wp-block-code"><code>=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式))</code></pre>



<p class="wp-block-paragraph">3つの引数すべてが必須です。省略するとエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc7">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>データ型</th><th>説明</th></tr></thead><tbody><tr><td>rows</td><td>はい</td><td>正の整数</td><td>生成する配列の行数（1以上）</td></tr><tr><td>cols</td><td>はい</td><td>正の整数</td><td>生成する配列の列数（1以上）</td></tr><tr><td>lambda</td><td>はい</td><td>LAMBDA式</td><td>各セルの値を決めるLAMBDA関数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>rows</code> と <code>cols</code> に小数や0以下の値を指定するとエラーになります。整数の正数を渡すのが鉄則です。</p>



<h3 class="wp-block-heading"><span id="toc8">LAMBDAに渡す2つの仮引数（r・c）</span></h3>



<p class="wp-block-paragraph">MAKEARRAYに渡すLAMBDA関数には、必ず2つの仮引数を定義します。1つ目に行番号、2つ目に列番号が渡されます。名前は自由です。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(2, 2, LAMBDA(行, 列, 行*10+列))</code></pre>



<p class="wp-block-paragraph"><code>r</code> と <code>c</code> でなくとも <code>行</code>・<code>列</code> のような日本語名でも問題ありません。慣習として <code>r</code>（row）と <code>c</code>（col）が使われます。本記事でも以降は <code>r</code>・<code>c</code> で統一します。</p>



<h3 class="wp-block-heading"><span id="toc9">r・c の値がどう動くか</span></h3>



<p class="wp-block-paragraph">行番号 <code>r</code> と列番号 <code>c</code> はどちらも「1」から始まります。たとえば3行2列の配列では、各セルに次のように値が渡されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>列1 (c=1)</th><th>列2 (c=2)</th></tr></thead><tbody><tr><td>行1</td><td>r=1, c=1</td><td>r=1, c=2</td></tr><tr><td>行2</td><td>r=2, c=1</td><td>r=2, c=2</td></tr><tr><td>行3</td><td>r=3, c=1</td><td>r=3, c=2</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この <code>r</code> と <code>c</code> を計算式の中で使い、各セルの値を組み立てます。ここがMAKEARRAYの心臓部です。</p>



<h3 class="wp-block-heading"><span id="toc10">結果は動的配列としてスピルする</span></h3>



<p class="wp-block-paragraph">MAKEARRAYは動的配列関数です。1つのセルに数式を入れるだけで、結果が自動的に下方向・右方向にスピル（自動展開）します。</p>



<pre class="wp-block-code"><code>A1: =MAKEARRAY(3, 4, LAMBDA(r, c, r*c))</code></pre>



<p class="wp-block-paragraph">A1に上記を入れると、A1:D3の範囲に12個の値が広がります。スピル先のセルに別の値が入っていると <code>#SPILL!</code> エラーになります。出力範囲はあらかじめ空けておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc11">MAKEARRAY関数の使い方①｜基本的な配列生成（定数・連番）</span></h2>



<p class="wp-block-paragraph">ここからは具体的な使い方を見ていきます。まずは「LAMBDAの中で <code>r</code> <code>c</code> を使う・使わない」の2つの基本パターンから始めます。</p>



<h3 class="wp-block-heading"><span id="toc12">例1：定数で埋めた配列を作る</span></h3>



<p class="wp-block-paragraph">最もシンプルな例は、すべて同じ値で埋めた配列です。次の数式で3行4列の「0」埋め配列を生成できます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(3, 4, LAMBDA(r, c, 0))</code></pre>



<p class="wp-block-paragraph">LAMBDAの中で <code>r</code> と <code>c</code> を使わず、固定値の <code>0</code> を返しています。出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>0</th><th>0</th><th>0</th><th>0</th></tr></thead><tbody><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">テンプレートの初期値や、条件付き書式を適用するためのキャンバスとして便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">例2：文字列で埋めた配列を作る</span></h3>



<p class="wp-block-paragraph">数値以外も入れられます。全セルを「未入力」で埋める場合は次のとおりです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 3, LAMBDA(r, c, &quot;未入力&quot;))</code></pre>



<p class="wp-block-paragraph">5行3列のすべてに「未入力」という文字列が並びます。入力欄のプレースホルダーとして使えます。</p>



<h3 class="wp-block-heading"><span id="toc14">例3：1から始まる連番を縦に並べる</span></h3>



<p class="wp-block-paragraph"><code>r</code> を使うと、行番号がそのまま値になります。1〜10の縦連番は次のとおりです。</p>



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



<p class="wp-block-paragraph">単純な連番だけなら<a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数</a>のほうがシンプルです。<code>=SEQUENCE(10)</code> の1行で済みます。MAKEARRAYの真価は次のような「計算を伴う配列」にあります。</p>



<h3 class="wp-block-heading"><span id="toc15">例4：通し番号（左から右、上から下）</span></h3>



<p class="wp-block-paragraph">3行4列に「1, 2, 3, 4 / 5, 6, 7, 8 / 9, 10, 11, 12」と通し番号を振る場合は、行番号と列番号の組み合わせで計算します。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(3, 4, LAMBDA(r, c, (r-1)*4+c))</code></pre>



<p class="wp-block-paragraph">出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead><tbody><tr><td>5</td><td>6</td><td>7</td><td>8</td></tr><tr><td>9</td><td>10</td><td>11</td><td>12</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「(行番号-1)×1行あたりの列数+列番号」が通し番号の定石パターンです。</p>



<h2 class="wp-block-heading"><span id="toc16">MAKEARRAY関数の使い方②｜行番号・列番号を使った動的な値の生成</span></h2>



<p class="wp-block-paragraph">LAMBDA内で <code>r</code> と <code>c</code> を組み合わせると、より動的な配列を作れます。実用度の高いパターンを4つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc17">例1：単位行列（対角線だけ1、他は0）</span></h3>



<p class="wp-block-paragraph">線形代数で出てくる単位行列は、対角線（行番号＝列番号）だけが1の正方行列です。<a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>と組み合わせれば1行で書けます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, IF(r=c, 1, 0)))</code></pre>



<p class="wp-block-paragraph">出力結果は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th></tr></thead><tbody><tr><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">統計分析や行列演算のテンプレートとして使えます。</p>



<h3 class="wp-block-heading"><span id="toc18">例2：チェッカーボード（市松模様）</span></h3>



<p class="wp-block-paragraph"><code>r+c</code> の偶奇で値を変えると、チェッカーボード状の配列ができます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(8, 8, LAMBDA(r, c, IF(MOD(r+c, 2)=0, &quot;■&quot;, &quot;□&quot;)))</code></pre>



<p class="wp-block-paragraph">8×8の市松模様が並びます。条件付き書式と組み合わせれば、配色テンプレートとしても使えます。</p>



<h3 class="wp-block-heading"><span id="toc19">例3：座標ラベルを生成する</span></h3>



<p class="wp-block-paragraph">行番号と列番号を文字列として組み立てれば、座標ラベル（A1表記など）を自動生成できます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, ADDRESS(r, c, 4)))</code></pre>



<p class="wp-block-paragraph"><code>ADDRESS</code> の第3引数 <code>4</code> は「相対参照」を意味します。出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>A1</th><th>B1</th><th>C1</th><th>D1</th><th>E1</th></tr></thead><tbody><tr><td>A2</td><td>B2</td><td>C2</td><td>D2</td><td>E2</td></tr><tr><td>A3</td><td>B3</td><td>C3</td><td>D3</td><td>E3</td></tr><tr><td>A4</td><td>B4</td><td>C4</td><td>D4</td><td>E4</td></tr><tr><td>A5</td><td>B5</td><td>C5</td><td>D5</td><td>E5</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc20">例4：ランダムなテストデータを生成</span></h3>



<p class="wp-block-paragraph">ダミーデータが必要な場面では <code>RANDBETWEEN</code> と組み合わせます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 5, LAMBDA(r, c, RANDBETWEEN(1, 100)))</code></pre>



<p class="wp-block-paragraph">10行5列の範囲に1〜100のランダム整数が一気に並びます。テスト用データセットの作成に重宝します。</p>



<p class="wp-block-paragraph"><code>RANDARRAY</code> でも似たことができます。ただしMAKEARRAYなら、位置に応じた条件分岐を入れられます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 5, LAMBDA(r, c, IF(c=5, RANDBETWEEN(100,200), RANDBETWEEN(1,10))))</code></pre>



<p class="wp-block-paragraph">「r行目だけは1〜10、c=5列目だけは100〜200」のような使い分けが可能です。これがMAKEARRAYの柔軟性です。</p>



<h2 class="wp-block-heading"><span id="toc21">MAKEARRAY関数の応用｜実務活用例（九九表・距離行列・三角関数テーブル）</span></h2>



<p class="wp-block-paragraph">ここからは、実務やデータ分析で使える応用パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc22">応用1：九九表を1関数で作る</span></h3>



<p class="wp-block-paragraph">MAKEARRAYの定番中の定番が九九表（掛け算表）です。行番号と列番号を掛けるだけで完成します。</p>



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



<p class="wp-block-paragraph">出力結果（一部）は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr></thead><tbody><tr><td>2</td><td>4</td><td>6</td><td>8</td><td>10</td><td>12</td><td>14</td><td>16</td><td>18</td></tr><tr><td>3</td><td>6</td><td>9</td><td>12</td><td>15</td><td>18</td><td>21</td><td>24</td><td>27</td></tr><tr><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA内の <code>r*c</code> を <code>r+c</code> に変えれば「足し算表」、<code>r^c</code> にすれば「累乗表」も作れます。</p>



<h3 class="wp-block-heading"><span id="toc23">応用2：単位変換テーブル（kg ⇔ ポンド）</span></h3>



<p class="wp-block-paragraph">縦方向にkg、横方向に変換係数を並べた変換テーブルも簡単に作れます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 2, LAMBDA(r, c, IF(c=1, r, ROUND(r*2.20462, 2))))</code></pre>



<p class="wp-block-paragraph">出力は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>kg</th><th>ポンド</th></tr></thead><tbody><tr><td>1</td><td>2.20</td></tr><tr><td>2</td><td>4.41</td></tr><tr><td>3</td><td>6.61</td></tr><tr><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>c=1</code> のときは行番号（kg）を返します。<code>c=2</code> のときはkg×2.20462（ポンド）を返します。ヘッダー行は別途追加します。</p>



<h3 class="wp-block-heading"><span id="toc24">応用3：距離行列を一発で作る</span></h3>



<p class="wp-block-paragraph">複数地点間の距離（コスト）行列も、行番号と列番号の組み合わせから生成できます。等差で配置された5地点の距離行列は次のとおりです。</p>



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



<p class="wp-block-paragraph"><code>r-c</code> の絶対値に10kmを掛けています。対角線は0、隣り合う地点は10、2つ離れると20…という具合に並びます。</p>



<figure class="wp-block-table"><table><thead><tr><th>0</th><th>10</th><th>20</th><th>30</th><th>40</th></tr></thead><tbody><tr><td>10</td><td>0</td><td>10</td><td>20</td><td>30</td></tr><tr><td>20</td><td>10</td><td>0</td><td>10</td><td>20</td></tr><tr><td>30</td><td>20</td><td>10</td><td>0</td><td>10</td></tr><tr><td>40</td><td>30</td><td>20</td><td>10</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">シミュレーションや配送計画のたたき台に使えます。</p>



<h3 class="wp-block-heading"><span id="toc25">応用4：三角関数テーブル（sin / cos / tan）</span></h3>



<p class="wp-block-paragraph">角度0〜90度のsin値テーブルを10度刻みで作る例です。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 2, LAMBDA(r, c, IF(c=1, (r-1)*10, ROUND(SIN(RADIANS((r-1)*10)), 4))))</code></pre>



<p class="wp-block-paragraph">出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>角度（度）</th><th>sin値</th></tr></thead><tbody><tr><td>0</td><td>0.0000</td></tr><tr><td>10</td><td>0.1736</td></tr><tr><td>20</td><td>0.3420</td></tr><tr><td>30</td><td>0.5000</td></tr><tr><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>SIN</code>・<code>COS</code>・<code>TAN</code> を切り替えるだけで他の三角関数テーブルも作れます。</p>



<h3 class="wp-block-heading"><span id="toc26">応用5：複利計算テーブル</span></h3>



<p class="wp-block-paragraph">行を年数、列を金利として複利後の元利合計を一気に計算するパターンです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 5, LAMBDA(r, c, ROUND(100*(1+c*0.01)^r, 2)))</code></pre>



<p class="wp-block-paragraph">100万円を元手に、年利1〜5%で1〜10年複利運用した結果が一発で並びます。</p>



<figure class="wp-block-table"><table><thead><tr><th>年  利率</th><th>1%</th><th>2%</th><th>3%</th><th>4%</th><th>5%</th></tr></thead><tbody><tr><td>1</td><td>101.00</td><td>102.00</td><td>103.00</td><td>104.00</td><td>105.00</td></tr><tr><td>2</td><td>102.01</td><td>104.04</td><td>106.09</td><td>108.16</td><td>110.25</td></tr><tr><td>3</td><td>103.03</td><td>106.12</td><td>109.27</td><td>112.49</td><td>115.76</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">シナリオ分析のシミュレーターとして使えます。</p>



<h3 class="wp-block-heading"><span id="toc27">応用6：ヒートマップ用のスコア行列</span></h3>



<p class="wp-block-paragraph">条件付き書式と組み合わせれば、ヒートマップの素材も作れます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(7, 24, LAMBDA(r, c, RANDBETWEEN(0, 100)))</code></pre>



<p class="wp-block-paragraph">7日×24時間のランダムなアクセス数を生成します。セルの値で色分けすればヒートマップの完成です。実データの構造を模したテンプレ作成に重宝します。</p>



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



<p class="wp-block-paragraph">MAKEARRAYは引数の型に厳密です。よく出るエラーと対処法を整理します。</p>



<h3 class="wp-block-heading"><span id="toc29">#NAME? エラー</span></h3>



<p class="wp-block-paragraph">関数名が認識されない場合に発生します。主な原因は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処</th></tr></thead><tbody><tr><td>Excel 2019以前で使用</td><td>Microsoft 365 / Excel 2021に更新</td></tr><tr><td>関数名のスペルミス</td><td><code>MAKEARRAY</code> を正しく入力</td></tr><tr><td>LAMBDAヘルパー未対応の旧ビルド</td><td>Officeを最新ビルドに更新</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">利用環境がMicrosoft 365でも、Officeのバージョンが古いと未対応なケースがあります。「ファイル → アカウント → 更新オプション」から最新化してください。</p>



<h3 class="wp-block-heading"><span id="toc30">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph">引数の型・値が不正な場合に発生します。主な原因は次のとおりです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(0, 5, LAMBDA(r, c, r*c))     ' rowsが0
=MAKEARRAY(3.5, 4, LAMBDA(r, c, r*c))   ' rowsが小数
=MAKEARRAY(3, 4, LAMBDA(r, r*c))        ' LAMBDA仮引数が1つ</code></pre>



<p class="wp-block-paragraph">対処は次のとおりです。</p>



<ul class="wp-block-list"><li><code>rows</code> <code>cols</code> は1以上の整数を指定</li><li>LAMBDAの仮引数は必ず2つ</li><li>文字列や論理値を <code>rows</code> <code>cols</code> に渡さない</li></ul>



<h3 class="wp-block-heading"><span id="toc31">#CALC! エラー</span></h3>



<p class="wp-block-paragraph">配列の計算が完了できない場合に発生します。MAKEARRAYで多いケースは次のとおりです。</p>



<ul class="wp-block-list"><li>配列が大きすぎてメモリ不足（数十万行など）</li><li>LAMBDA内で自己参照や循環参照を発生させた</li></ul>



<p class="wp-block-paragraph">対処として、まずは <code>rows</code> <code>cols</code> を小さくして動作確認します。問題なければ徐々に拡大していきましょう。</p>



<h3 class="wp-block-heading"><span id="toc32">#SPILL! エラー</span></h3>



<p class="wp-block-paragraph">結果のスピル先に既存の値があるとこのエラーになります。出力範囲を空けておくか、新しいシートで試してください。</p>



<h3 class="wp-block-heading"><span id="toc33">「LAMBDA関数が単独で使えない」と言われる場合</span></h3>



<p class="wp-block-paragraph">MAKEARRAYの第3引数に渡すLAMBDAは、呼び出しカッコを付けません。</p>



<pre class="wp-block-code"><code>' 正しい例
=MAKEARRAY(3, 3, LAMBDA(r, c, r*c))

' 誤った例（LAMBDAを単独呼び出ししている）
=MAKEARRAY(3, 3, LAMBDA(r, c, r*c)(1, 1))</code></pre>



<p class="wp-block-paragraph">LAMBDA本体だけを「関数の値」として渡すのがポイントです。</p>



<h2 class="wp-block-heading"><span id="toc34">MAKEARRAY・SEQUENCE・MAP・BYROW/BYCOLの使い分け</span></h2>



<p class="wp-block-paragraph">LAMBDAヘルパー系・配列生成系の関数は似て非なる関数です。役割を整理しておくと迷いません。</p>



<h3 class="wp-block-heading"><span id="toc35">全体比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>役割</th><th>出力サイズ</th><th>LAMBDAの仮引数</th></tr></thead><tbody><tr><td>MAKEARRAY</td><td>なし（rows×cols指定）</td><td>ゼロから配列を生成</td><td>指定サイズ</td><td>2つ（r, c）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE</a></td><td>なし（rows×cols指定）</td><td>等差数列を生成</td><td>指定サイズ</td><td>不要</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP</a></td><td>既存配列</td><td>各要素にLAMBDA適用</td><td>同サイズ</td><td>1つ以上</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE</a></td><td>既存配列</td><td>累積処理して1値に集約</td><td>スカラー</td><td>2つ（累積値, 要素）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN</a></td><td>既存配列</td><td>累積処理（途中結果含む）</td><td>同サイズ</td><td>2つ</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a></td><td>既存配列</td><td>行ごとにLAMBDA適用</td><td>列ベクトル</td><td>1つ（行配列）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a></td><td>既存配列</td><td>列ごとにLAMBDA適用</td><td>行ベクトル</td><td>1つ（列配列）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc36">MAKEARRAY vs SEQUENCE</span></h3>



<p class="wp-block-paragraph">両者ともゼロから配列を作りますが、得意分野が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MAKEARRAY</th><th>SEQUENCE</th></tr></thead><tbody><tr><td>生成方法</td><td>LAMBDAで自由計算</td><td>等差数列（開始値+ステップ）</td></tr><tr><td>柔軟性</td><td>各セルで異なる計算が可能</td><td>規則的な連番のみ</td></tr><tr><td>LAMBDA</td><td>必須</td><td>不要</td></tr><tr><td>構文の複雑さ</td><td>やや複雑</td><td>シンプル</td></tr><tr><td>典型用途</td><td>九九表・単位行列・三角関数表</td><td>連番・日付連番・通し番号</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>判断基準</strong>：等差数列（1,2,3&#8230;）ならSEQUENCE。位置に応じた自由な計算が必要ならMAKEARRAY。この2択で判断できます。</p>



<p class="wp-block-paragraph">たとえば <code>1, 2, 3, 4, 5</code> ならSEQUENCEの一発で十分です。<code>1, 4, 9, 16, 25</code>（平方数）はMAKEARRAYが必要です。</p>



<pre class="wp-block-code"><code>' 連番 → SEQUENCEが最適
=SEQUENCE(5)

' 平方数 → MAKEARRAYが最適
=MAKEARRAY(5, 1, LAMBDA(r, c, r^2))</code></pre>



<h3 class="wp-block-heading"><span id="toc37">MAKEARRAY vs MAP</span></h3>



<p class="wp-block-paragraph">MAPは「既存の配列の各要素にLAMBDAを適用する」関数です。MAKEARRAYと混同しがちですが、入力が違います。</p>



<pre class="wp-block-code"><code>' MAP：A2:A10の値を2倍にする
=MAP(A2:A10, LAMBDA(x, x*2))

' MAKEARRAY：1〜9の2倍を新規生成
=MAKEARRAY(9, 1, LAMBDA(r, c, r*2))</code></pre>



<p class="wp-block-paragraph"><strong>判断基準</strong>：既存のデータを加工したいならMAP。ゼロから値を生成したいならMAKEARRAY。</p>



<h3 class="wp-block-heading"><span id="toc38">MAKEARRAY vs BYROW / BYCOL</span></h3>



<p class="wp-block-paragraph">BYROW / BYCOLは「既存配列を行ごと・列ごとにLAMBDAで処理する」関数です。集計に向いています。</p>



<pre class="wp-block-code"><code>' BYROW：各行の合計を縦に並べる
=BYROW(A2:E10, LAMBDA(行, SUM(行)))

' MAKEARRAY：行ごとに何かを生成
=MAKEARRAY(10, 1, LAMBDA(r, c, SUM(OFFSET(A2, r-1, 0, 1, 5))))</code></pre>



<p class="wp-block-paragraph">集計目的ならBYROW / BYCOLが素直で読みやすいです。MAKEARRAYで同じことをしようとすると回りくどくなりがちです。</p>



<h3 class="wp-block-heading"><span id="toc39">使い分けフローチャート</span></h3>



<p class="wp-block-paragraph">迷ったら次の順で考えます。</p>



<ol class="wp-block-list"><li><strong>既存配列を加工したい？</strong> → Yes：MAP / BYROW / BYCOL / SCAN / REDUCE</li><li><strong>ゼロから等差数列を作りたい？</strong> → Yes：SEQUENCE</li><li><strong>ゼロから位置依存の計算をしたい？</strong> → Yes：MAKEARRAY</li></ol>



<p class="wp-block-paragraph">この3問でほぼ判別できます。</p>



<h2 class="wp-block-heading"><span id="toc40">ExcelのMAKEARRAY関数 よくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc41">Q1. MAKEARRAY関数はGoogleスプレッドシートでも使えますか？</span></h3>



<p class="wp-block-paragraph">A. 現時点では使えません。MAKEARRAYはMicrosoft 365 / Excel 2021以降の専用関数です。Googleスプレッドシートにはこれに直接対応する関数はありません。代替として <code>ARRAYFORMULA</code> + <code>SEQUENCE</code> + <code>ROW</code>/<code>COLUMN</code> の組み合わせで似たことができます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(SEQUENCE(9)*TRANSPOSE(SEQUENCE(9)))</code></pre>



<p class="wp-block-paragraph">このパターンで九九表をスプレッドシートでも作れます。</p>



<h3 class="wp-block-heading"><span id="toc42">Q2. MAKEARRAYの結果を別の関数に渡せますか？</span></h3>



<p class="wp-block-paragraph">A. はい、できます。MAKEARRAYの戻り値は通常の配列です。<code>SUM</code>・<code>AVERAGE</code>・<code>MAX</code>・<code>SORT</code> などに直接渡せます。</p>



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



<p class="wp-block-paragraph">これで「10×10の掛け算表の合計」が1つの数式で求まります。MAKEARRAYは式の途中部品としても優秀です。</p>



<h3 class="wp-block-heading"><span id="toc43">Q3. LAMBDA内でセル参照（A1など）は使えますか？</span></h3>



<p class="wp-block-paragraph">A. 使えます。次のように外部のセル参照を計算式に含められます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, $A$1*r+c))</code></pre>



<p class="wp-block-paragraph">ただし、参照するセルが変わるたびに配列全体が再計算されます。大きな配列だとパフォーマンスに影響するため、必要最小限にとどめましょう。</p>



<h3 class="wp-block-heading"><span id="toc44">Q4. MAKEARRAYで作った配列を値として固定したいときは？</span></h3>



<p class="wp-block-paragraph">A. 数式バーで <code>F9</code> を押すと、計算結果が配列リテラルに置き換わります。あるいは <code>Ctrl+C</code> でコピーし、「形式を選択して貼り付け → 値」で値貼り付けする方法もあります。ハードコードされた値の表になるため、テンプレート化したいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc45">Q5. なぜLAMBDAの仮引数は2つ固定なのですか？</span></h3>



<p class="wp-block-paragraph">A. MAKEARRAYは「行番号」と「列番号」の2つを必ず内部で渡す仕様だからです。引数が1つだけだと列番号を受け取れません。3つ以上だと余分な引数への値の渡し方が定義されていません。仮引数は必ず2個と覚えておきましょう。</p>



<p class="wp-block-paragraph">なお、片方を使わない場合（例：常に固定値）でも、仮引数の宣言は省略できません。</p>



<pre class="wp-block-code"><code>' 仮引数cを使わなくても、宣言は必須
=MAKEARRAY(5, 5, LAMBDA(r, c, r))</code></pre>



<h3 class="wp-block-heading"><span id="toc46">Q6. 配列のサイズを動的に変えられますか？</span></h3>



<p class="wp-block-paragraph">A. はい。<code>rows</code> と <code>cols</code> にセル参照や式を渡せば、入力値に応じて配列サイズが変わります。</p>



<pre class="wp-block-code"><code>=MAKEARRAY($B$1, $B$2, LAMBDA(r, c, r*c))</code></pre>



<p class="wp-block-paragraph">B1とB2に入力した値で九九表のサイズが変わります。ダッシュボードの動的テンプレートに応用できます。</p>



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



<p class="wp-block-paragraph">ExcelのMAKEARRAY関数は、LAMBDAと組み合わせてゼロから配列を自由に生成できる強力な関数です。</p>



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



<ul class="wp-block-list"><li>構文は <code>=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式))</code></li><li>行番号 <code>r</code> と列番号 <code>c</code> は1から始まる</li><li>LAMBDAの仮引数は必ず2つ</li><li>等差数列ならSEQUENCE、自由計算ならMAKEARRAY</li><li>既存配列の加工はMAP / BYROW / BYCOLが適任</li><li>対応環境はMicrosoft 365 / Excel 2021以降</li></ul>



<p class="wp-block-paragraph">まずは「九九表」「単位行列」「通し番号」など、シンプルな例で動かしてみてください。<code>r</code> と <code>c</code> の動きが体感できれば、距離行列・三角関数表・複利計算テーブルといった応用も自然と書けるようになります。</p>



<p class="wp-block-paragraph">LAMBDAヘルパー関数は単独で覚えるよりも、まとめて学ぶと違いが明確になります。MAP・BYROW・BYCOL・REDUCE・SCANと並べて使い分けの感覚を掴んでください。</p>



<p class="wp-block-paragraph"><strong>関連記事</strong>:</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の使い方｜カスタム関数を自作する方法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数の使い方｜連番・日付・2次元配列を1関数で</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数の使い方｜BYROWとの違いと使い分け</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE関数の使い方｜配列を1つの値に集約する方法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN関数の使い方｜REDUCEとの違いと累計・残高推移への活用法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数の使い方｜行ごとに関数を適用</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数の使い方｜列ごとに関数適用</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数の使い方｜条件分岐の基本</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-makearray/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのREDUCE関数の使い方｜配列を1つの値に集約する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-reduce/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-reduce/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 15:36:44 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[LAMBDA]]></category>
		<category><![CDATA[LAMBDAヘルパー関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REDUCE関数]]></category>
		<category><![CDATA[SCAN関数]]></category>
		<category><![CDATA[中級者向け]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5912</guid>

					<description><![CDATA[ExcelのREDUCE関数の使い方を中級者向けに解説。初期値・累積値の概念から条件付き集計・累積割引などの実務パターン、SCAN関数との違い、LAMBDAヘルパー関数の比較表まで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelのLAMBDAヘルパー関数を触っていて、「REDUCE関数って何に使うの？」と感じたことはありませんか。MAPやBYROWは直感的に使えても、REDUCEは「初期値」「累積値」という聞きなれない概念が出てきて、手が止まりがちです。</p>



<p class="wp-block-paragraph">「配列を1つの値にまとめたいけど、SUMやPRODUCTでは条件が足りない」——そんな場面こそ、REDUCE関数の出番です。公式ドキュメントだけでは処理の流れがつかみづらいですよね。でもステップを追って見ればやっていることはシンプルですよ。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREDUCE関数の使い方を構文から実務パターンまで中級者向けに解説します。初期値・累積値の概念をステップバイステップで説明し、条件付き集計や文字列結合などの実務例もカバーします。SCAN関数との使い分けまで押さえれば、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">ExcelのREDUCE関数とは？</a><ol><li><a href="#toc2" tabindex="0">LAMBDAヘルパー関数グループとは</a></li></ol></li><li><a href="#toc3" tabindex="0">REDUCE関数の書き方（構文と引数）</a><ol><li><a href="#toc4" tabindex="0">基本構文</a></li><li><a href="#toc5" tabindex="0">引数の詳細</a></li><li><a href="#toc6" tabindex="0">初期値・累積値とは？</a></li></ol></li><li><a href="#toc7" tabindex="0">REDUCE関数の基本的な使い方</a><ol><li><a href="#toc8" tabindex="0">数値の合計を求める（SUM相当）</a></li><li><a href="#toc9" tabindex="0">数値の積を求める（PRODUCT相当）</a></li><li><a href="#toc10" tabindex="0">文字列を連結する</a></li></ol></li><li><a href="#toc11" tabindex="0">REDUCE関数の実務活用パターン</a><ol><li><a href="#toc12" tabindex="0">パターン1: 条件付きで数値を集計する</a></li><li><a href="#toc13" tabindex="0">パターン2: 区切り文字付きで文字列を結合する</a></li><li><a href="#toc14" tabindex="0">パターン3: 累積割引率を計算する</a></li></ol></li><li><a href="#toc15" tabindex="0">SCAN関数との違い・使い分け</a></li><li><a href="#toc16" tabindex="0">LAMBDAヘルパー関数の比較表</a></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">#VALUE!エラー</a></li><li><a href="#toc19" tabindex="0">#NAME?エラー</a></li><li><a href="#toc20" tabindex="0">#CALC!エラー</a></li><li><a href="#toc21" tabindex="0">結果が0になる（初期値ミス）</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">REDUCE関数は「リデュース」と読みます。英語の&#8221;reduce&#8221;は「減らす・まとめる」という意味です。プログラミングの世界では「配列を1つの値に畳み込む操作」を指します。JavaScriptの<code>Array.reduce</code>やPythonの<code>functools.reduce</code>と同じ概念ですね。</p>



<p class="wp-block-paragraph">ExcelのREDUCE関数は、配列の要素を順番に処理し、<strong>最終的に1つの値にまとめて返す</strong>関数です。<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数</a>と組み合わせて使う「LAMBDAヘルパー関数」の1つで、Microsoft 365およびExcel 2024で利用できます。</p>



<p class="wp-block-paragraph">たとえばA1:A5に{10, 20, 30, 40, 50}が入っているとします。REDUCE関数で合計を求めると150という1つの値が返ります。「それならSUMで十分では？」と思うかもしれません。REDUCEの強みは、LAMBDA内に自由な計算ロジックを書ける点にあります。条件付きの集計や累積割引率の計算など、SUMやPRODUCTでは書けない柔軟な処理を実現できますよ。</p>



<h3 class="wp-block-heading"><span id="toc2">LAMBDAヘルパー関数グループとは</span></h3>



<p class="wp-block-paragraph">LAMBDAヘルパー関数とは、LAMBDA関数と組み合わせて使う前提で設計された関数群の総称です。以下の6つが該当します。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP</a>：各セルにLAMBDAを適用して変換</li><li><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a>：行ごとにLAMBDAを適用して集計</li><li><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a>：列ごとにLAMBDAを適用して集計</li><li>REDUCE：配列全体を1つの値に集約</li><li>SCAN：累積計算の途中経過をすべて返す</li><li>MAKEARRAY：指定したサイズの配列をゼロから生成</li></ul>



<p class="wp-block-paragraph">これらは2022年頃にMicrosoft 365とGoogleスプレッドシートで導入されました。LAMBDA関数の基本を押さえておくと理解が早いです。初めての方は先に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の基本記事</a>を読んでおくとスムーズですよ。</p>



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



<p class="wp-block-paragraph">ここからはREDUCE関数の構文を見ていきましょう。引数は3つだけなので、順番と役割を押さえれば難しくありません。</p>



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



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



<pre class="wp-block-code"><code>=REDUCE(初期値, 配列, LAMBDA(累積値, 現在値, 計算式))</code></pre>



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



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



<p class="wp-block-paragraph">この数式は、初期値0から始めてA1:A5の値を順番に足し合わせます。<code>acc</code>が累積値、<code>val</code>が現在処理中の要素です。変数名は自由に付けられますが、<code>acc</code>（accumulator）と<code>val</code>（value）が定番ですよ。</p>



<h3 class="wp-block-heading"><span id="toc5">引数の詳細</span></h3>



<p class="wp-block-paragraph">引数の意味を表で整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>初期値（initial_value）</td><td>必須</td><td>累積処理の開始値。合計なら<code>0</code>、積なら<code>1</code>、文字列結合なら<code>""</code>を指定</td></tr><tr><td>配列（array）</td><td>必須</td><td>処理対象のセル範囲または配列</td></tr><tr><td>LAMBDA</td><td>必須</td><td>仮引数は必ず2つ（累積値, 現在値）。3番目に計算式を記述</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">重要なルールが2つあります。<strong>LAMBDAの仮引数は必ず2つ</strong>でなければなりません。1つや3つにすると<code>#VALUE!</code>エラーが発生します。また<strong>初期値の型は処理内容に合わせる</strong>必要があります。数値の合計に<code>""</code>を渡すと型の不整合でエラーになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">初期値・累積値とは？</span></h3>



<p class="wp-block-paragraph">REDUCE関数を理解するカギは「初期値」と「累積値」の概念です。A1:A3に{10, 20, 30}が入っている例で、処理の流れを見てみましょう。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>ステップ</th><th>acc（累積値）</th><th>val（現在値）</th><th>計算</th><th>結果</th></tr></thead><tbody><tr><td>開始</td><td>0（初期値）</td><td>—</td><td>—</td><td>—</td></tr><tr><td>1</td><td>0</td><td>10</td><td>0 + 10</td><td>10</td></tr><tr><td>2</td><td>10</td><td>20</td><td>10 + 20</td><td>30</td></tr><tr><td>3</td><td>30</td><td>30</td><td>30 + 30</td><td>60</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最終的に返るのは最後のステップの結果<strong>60</strong>だけです。途中経過の10や30は出力されません。「途中経過も見たい」という場合はSCAN関数を使います（後のセクションで解説します）。</p>



<p class="wp-block-paragraph">前のステップの結果が次のステップの<code>acc</code>に引き継がれていく仕組みが「累積処理」です。初期値はこの連鎖の出発点になる値ですよ。</p>



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



<p class="wp-block-paragraph">構文が分かったところで、基本パターンを3つ見ていきましょう。SUMやPRODUCTに相当する処理をREDUCEで書くと、仕組みの理解が深まります。</p>



<h3 class="wp-block-heading"><span id="toc8">数値の合計を求める（SUM相当）</span></h3>



<p class="wp-block-paragraph">最もシンプルな使い方です。A1:A5に{10, 20, 30, 40, 50}が入っているとします。</p>



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



<p class="wp-block-paragraph">初期値<code>0</code>から始めて各要素を順に足し合わせ、<strong>150</strong>を返します。これは<code>=SUM(A1:A5)</code>と同じ結果です。「わざわざREDUCEを使う意味は？」と思うかもしれません。この基本形をベースにLAMBDA内の計算式を変えれば、SUMでは書けない柔軟な処理に拡張できますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">数値の積を求める（PRODUCT相当）</span></h3>



<p class="wp-block-paragraph">掛け算の場合は初期値を<code>1</code>にします。A1:A4に{2, 3, 4, 5}が入っている例です。</p>



<pre class="wp-block-code"><code>=REDUCE(1, A1:A4, LAMBDA(acc, val, acc * val))</code></pre>



<p class="wp-block-paragraph">初期値<code>1</code>から始めて、1×2=2、2×3=6、6×4=24、24×5=<strong>120</strong>を返します。<code>=PRODUCT(A1:A4)</code>と同じ結果です。</p>



<p class="wp-block-paragraph">ここで注意したいのが初期値です。<strong>積を求めるときに初期値を<code>0</code>にすると、結果は常に0になります</strong>。0に何を掛けても0のためです。処理内容に合った値を設定してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc10">文字列を連結する</span></h3>



<p class="wp-block-paragraph">文字列を連結する場合は、初期値を空文字<code>""</code>にします。A1:A3に{&#8220;東京&#8221;, &#8220;大阪&#8221;, &#8220;名古屋&#8221;}が入っている例です。</p>



<pre class="wp-block-code"><code>=REDUCE(&quot;&quot;, A1:A3, LAMBDA(acc, val, acc &amp; val))</code></pre>



<p class="wp-block-paragraph">結果は「<strong>東京大阪名古屋</strong>」です。空文字からスタートして、要素を順番につなぎ合わせます。区切り文字を入れたい場合は次のセクションで紹介しますね。</p>



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



<p class="wp-block-paragraph">ここからは「SUMやPRODUCTでは書けない処理」を実務例で見ていきます。REDUCEの真価が発揮される場面です。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン1: 条件付きで数値を集計する</span></h3>



<p class="wp-block-paragraph">A列に商品名、B列に売上がある表で、「りんご」の売上だけを合計したいケースです。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（商品名）</th><th>B列（売上）</th></tr></thead><tbody><tr><td>りんご</td><td>300</td></tr><tr><td>みかん</td><td>200</td></tr><tr><td>りんご</td><td>500</td></tr><tr><td>バナナ</td><td>150</td></tr><tr><td>りんご</td><td>400</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=REDUCE(0, SEQUENCE(5), LAMBDA(acc, i, acc + IF(INDEX(A1:A5, i)=&quot;りんご&quot;, INDEX(B1:B5, i), 0)))</code></pre>



<p class="wp-block-paragraph">この数式はSEQUENCE(5)で1〜5の行番号を生成します。各行のA列が「りんご」ならB列の値を加算し、そうでなければ0を加算します。結果は300+500+400=<strong>1200</strong>です。</p>



<p class="wp-block-paragraph">「それなら<a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF関数</a>で十分では？」と思うかもしれません。確かにこの例ならSUMIFのほうがシンプルです。しかしREDUCEなら、LAMBDA内のIF条件をいくらでも複雑にできます。複数条件の組み合わせや、計算途中でロジックを変えたい場合に威力を発揮しますよ。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン2: 区切り文字付きで文字列を結合する</span></h3>



<p class="wp-block-paragraph">A1:A4に{&#8220;東京&#8221;, &#8220;大阪&#8221;, &#8220;名古屋&#8221;, &#8220;福岡&#8221;}が入っていて、カンマ区切りで結合したいケースです。</p>



<pre class="wp-block-code"><code>=REDUCE(&quot;&quot;, A1:A4, LAMBDA(acc, val, IF(acc=&quot;&quot;, val, acc &amp; &quot;, &quot; &amp; val)))</code></pre>



<p class="wp-block-paragraph">結果は「<strong>東京, 大阪, 名古屋, 福岡</strong>」です。ポイントはIF文で「accが空文字なら区切り文字を付けない」という分岐を入れている点です。これがないと先頭に余計なカンマが付いてしまいます。</p>



<p class="wp-block-paragraph">Excel 2019以降にはTEXTJOIN関数がありますが、REDUCE版なら結合時に条件フィルターを組み込めます。要素ごとに加工しながら結合したい場合にも便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン3: 累積割引率を計算する</span></h3>



<p class="wp-block-paragraph">B1:B4に月ごとの割引率{10%, 5%, 15%, 8%}が入っていて、4か月間の累積割引後の残存率を求めたいケースです。</p>



<pre class="wp-block-code"><code>=REDUCE(1, B1:B4, LAMBDA(acc, rate, acc * (1 - rate)))</code></pre>



<p class="wp-block-paragraph">処理の流れを追ってみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>ステップ</th><th>acc</th><th>rate</th><th>計算</th><th>結果</th></tr></thead><tbody><tr><td>1</td><td>1</td><td>10%</td><td>1 × 0.9</td><td>0.9</td></tr><tr><td>2</td><td>0.9</td><td>5%</td><td>0.9 × 0.95</td><td>0.855</td></tr><tr><td>3</td><td>0.855</td><td>15%</td><td>0.855 × 0.85</td><td>0.72675</td></tr><tr><td>4</td><td>0.72675</td><td>8%</td><td>0.72675 × 0.92</td><td>0.66861</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最終結果は約<strong>0.669</strong>（66.9%）です。元の値の66.9%が残る、つまり累積で約33.1%の割引が適用されたことになります。「前のステップの結果に次の値を掛け合わせていく」計算は、SUMやPRODUCTだけでは書けません。REDUCEならステップごとの処理を明確に表現できますよ。</p>



<h2 class="wp-block-heading"><span id="toc15">SCAN関数との違い・使い分け</span></h2>



<p class="wp-block-paragraph">REDUCE関数とよくセットで語られるのがSCAN関数です。構文はほぼ同じですが、<strong>返す値が決定的に違います</strong>。</p>



<pre class="wp-block-code"><code>=REDUCE(0, A1:A3, LAMBDA(acc, val, acc + val))  // → 60（最終値のみ）
=SCAN(0, A1:A3, LAMBDA(acc, val, acc + val))     // → {10, 30, 60}（各ステップの値）</code></pre>



<p class="wp-block-paragraph">A1:A3に{10, 20, 30}が入っている場合で比較します。REDUCE関数は最終値の60だけを返します。一方SCAN関数は各ステップの中間値{10, 30, 60}を配列として返します。</p>



<p class="wp-block-paragraph">使い分けの基準はシンプルです。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>使いどころ</th></tr></thead><tbody><tr><td>REDUCE</td><td>最終値のみ（スカラー値）</td><td>合計・文字列結合など最終結果だけ欲しいとき</td></tr><tr><td>SCAN</td><td>全ステップの値（配列）</td><td>累積推移グラフ・残高推移表など途中経過が必要なとき</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「最終的な答えだけ欲しい」ならREDUCE、「途中経過も全部見たい」ならSCANと覚えておけば迷いませんよ。</p>



<h2 class="wp-block-heading"><span id="toc16">LAMBDAヘルパー関数の比較表</span></h2>



<p class="wp-block-paragraph">LAMBDAヘルパー関数6種の役割を「処理単位」「戻り値の形」「主な用途」の3軸で整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>処理単位</th><th>戻り値の形</th><th>主な用途</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP</a></td><td>1セル</td><td>入力と同じサイズ</td><td>セル単位の変換</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a></td><td>1行</td><td>N行×1列</td><td>行ごとの集計</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a></td><td>1列</td><td>1行×N列</td><td>列ごとの集計</td></tr><tr><td>REDUCE</td><td>配列全体</td><td>単一の値</td><td>全体を1つの値に集約</td></tr><tr><td>SCAN</td><td>配列全体</td><td>入力と同じサイズ</td><td>累積計算の途中経過を返す</td></tr><tr><td>MAKEARRAY</td><td>—</td><td>指定サイズ</td><td>配列をゼロから生成</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったときは「出力の形」から逆算してください。1つの値にしたいならREDUCE、入力と同じ形がほしいならMAPかSCANです。縦1列ならBYROW、横1行ならBYCOLですよ。</p>



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



<p class="wp-block-paragraph">REDUCE関数を使い始めると遭遇しやすいエラーをまとめました。</p>



<h3 class="wp-block-heading"><span id="toc18">#VALUE!エラー</span></h3>



<p class="wp-block-paragraph"><code>#VALUE!</code>が出る主な原因は2つです。</p>



<ul class="wp-block-list"><li><strong>LAMBDAの仮引数が2つでない</strong>: REDUCEのLAMBDAは「累積値」「現在値」の2つが必須です。1つや3つにするとエラーになります</li><li><strong>初期値の型と計算結果の型が一致しない</strong>: 数値の合計なのに初期値を文字列にした場合などに発生します</li></ul>



<pre class="wp-block-code"><code>// NG: 仮引数が1つ
=REDUCE(0, A1:A5, LAMBDA(acc, acc + 1))

// OK: 仮引数が2つ
=REDUCE(0, A1:A5, LAMBDA(acc, val, acc + val))</code></pre>



<h3 class="wp-block-heading"><span id="toc19">#NAME?エラー</span></h3>



<p class="wp-block-paragraph"><code>#NAME?</code>が出る原因は主に3つです。</p>



<ul class="wp-block-list"><li><strong>関数名のスペルミス</strong>: <code>REDCUE</code>のような打ち間違い</li><li><strong>Excel 2021以前で使用</strong>: REDUCE関数はMicrosoft 365またはExcel 2024が必要です。お使いのバージョンが対応しているか確認してみてください</li><li><strong>LAMBDA仮引数名にセル参照を使用</strong>: <code>A1</code>や<code>B2</code>のようなセル参照と同じ名前を仮引数にすると発生します。<code>acc</code>や<code>val</code>のように重ならない名前を使いましょう</li></ul>



<h3 class="wp-block-heading"><span id="toc20">#CALC!エラー</span></h3>



<p class="wp-block-paragraph"><code>#CALC!</code>はLAMBDA内部で不正な計算が行われた場合に発生します。計算式を見直し、空セルやエラー値が含まれていないか確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc21">結果が0になる（初期値ミス）</span></h3>



<p class="wp-block-paragraph">「エラーは出ないのに結果が0になる」というケースがあります。積を求めるときに初期値を<code>0</code>にすると、0×何=0のまま最後まで0が続きます。</p>



<pre class="wp-block-code"><code>// NG: 初期値が0（積の結果は常に0）
=REDUCE(0, A1:A5, LAMBDA(acc, val, acc * val))

// OK: 初期値を1にする
=REDUCE(1, A1:A5, LAMBDA(acc, val, acc * val))</code></pre>



<p class="wp-block-paragraph">積を求めるなら初期値は<code>1</code>、合計なら<code>0</code>、文字列結合なら<code>""</code>を設定してくださいね。</p>



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



<p class="wp-block-paragraph">ExcelのREDUCE関数は、配列の要素を順番に処理して<strong>最終的に1つの値にまとめて返す</strong>関数です。LAMBDA内に自由な計算ロジックを書けるため、SUMやPRODUCTでは対応できない柔軟な集約処理を実現できます。</p>



<p class="wp-block-paragraph">この記事のポイントを振り返ります。</p>



<ul class="wp-block-list"><li><strong>構文</strong>: <code>=REDUCE(初期値, 配列, LAMBDA(累積値, 現在値, 計算式))</code>。LAMBDAの仮引数は必ず2つ</li><li><strong>初期値の選び方</strong>: 合計なら<code>0</code>、積なら<code>1</code>、文字列結合なら<code>""</code>。初期値のミスは結果に直結する</li><li><strong>基本パターン</strong>: SUM相当（加算）、PRODUCT相当（乗算）、文字列連結が基本の3パターン</li><li><strong>実務活用</strong>: 条件付き集計・区切り文字付き結合・累積割引率の計算など、柔軟な処理が可能</li><li><strong>SCAN関数との違い</strong>: REDUCEは最終値のみ、SCANは途中経過の配列を返す</li><li><strong>対応バージョン</strong>: Microsoft 365 / Excel 2024。Excel 2021以前は非対応</li><li><strong>よくあるエラー</strong>: <code>#VALUE!</code>（仮引数の数が不正）、<code>#NAME?</code>（スペルミス・バージョン非対応）、結果が0（初期値ミス）</li></ul>



<p class="wp-block-paragraph">REDUCE関数は「配列を1つの値に畳み込む」という概念さえ掴めれば、使い方の幅がどんどん広がります。まずは基本のSUM相当の式から試してみてください。</p>



<p class="wp-block-paragraph">LAMBDAヘルパー関数をもっと深掘りしたい方は、<a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数</a>の記事もあわせてご覧ください。LAMBDA関数の基本から学びたい方は<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の解説記事</a>がおすすめです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-reduce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのMAP関数の使い方｜BYROWとの違いと使い分け</title>
		<link>https://mashukabu.com/excel-function-howto-use-map/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-map/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 12:10:21 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[LAMBDA]]></category>
		<category><![CDATA[LAMBDAヘルパー関数]]></category>
		<category><![CDATA[MAP関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[中級者向け]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5903</guid>

					<description><![CDATA[ExcelのMAP関数の使い方を中級者向けに解説。配列のセル単位変換や複数配列の組み合わせを実例付きで紹介。BYROW・BYCOL・REDUCEとの違いを比較表で整理し「どの関数を使うべきか」を明確にします。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelでLAMBDAやBYROWを触ってみたものの、「MAP関数って結局何が便利なの？」と感じていませんか。BYROWと似ているようで、実は役割がまったく違います。</p>



<p class="wp-block-paragraph">「行ごとの合計ならBYROWでいいけど、セル単位で値を変換したいときはどう書けばいいんだろう？」——これはMAP関数の出番です。公式ドキュメントだけでは違いが分かりづらく、どちらを使うべきか迷う方も多いはずです。</p>



<p class="wp-block-paragraph">この記事では、ExcelのMAP関数の使い方を構文から実務例まで中級者向けに解説します。BYROW・BYCOL・REDUCEとの違いを3軸で整理し、「セル単位変換ならMAP、行単位集計ならBYROW」という判断基準を明確にします。読み終わるころには、LAMBDAヘルパー関数グループを自信を持って使い分けられるようになります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">MAP関数とは？</a><ol><li><a href="#toc2" tabindex="0">LAMBDAヘルパー関数グループとは</a></li><li><a href="#toc3" tabindex="0">BYROW・BYCOL・REDUCEとの違いを3軸比較表で整理</a></li></ol></li><li><a href="#toc4" tabindex="0">MAP関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の詳細</a></li><li><a href="#toc7" tabindex="0">BYROW・BYCOLとの構文の違い</a></li></ol></li><li><a href="#toc8" tabindex="0">MAP関数の基本的な使い方</a><ol><li><a href="#toc9" tabindex="0">単一配列のセル単位変換（掛け算・条件分岐）</a></li><li><a href="#toc10" tabindex="0">複数配列を組み合わせる（2列を演算して新配列を作る）</a></li></ol></li><li><a href="#toc11" tabindex="0">MAP関数の実務活用例</a><ol><li><a href="#toc12" tabindex="0">単価×数量を1つの数式でまとめて計算</a></li><li><a href="#toc13" tabindex="0">文字列の条件変換（フラグ付与）</a></li><li><a href="#toc14" tabindex="0">IFとの組み合わせ</a></li></ol></li><li><a href="#toc15" tabindex="0">BYROWとMAPはどちらを使うべきか？</a><ol><li><a href="#toc16" tabindex="0">行単位集計 vs セル単位変換</a></li><li><a href="#toc17" tabindex="0">判断フローチャート</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">#SPILL!エラー</a></li><li><a href="#toc20" tabindex="0">#VALUE!エラー</a></li><li><a href="#toc21" tabindex="0">#N/Aエラー（複数配列のサイズ不一致）</a></li></ol></li><li><a href="#toc22" tabindex="0">Google スプレッドシートのMAP関数との違い</a></li><li><a href="#toc23" tabindex="0">よくある質問（MAP関数）</a><ol><li><a href="#toc24" tabindex="0">Q1. MAP関数はExcel 2021では使えませんか？</a></li><li><a href="#toc25" tabindex="0">Q2. MAP関数内のLAMBDAにSUMやAVERAGEを使うことはできますか？</a></li><li><a href="#toc26" tabindex="0">Q3. MAPで生成した配列を別の数式の入力に使えますか？</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">MAP関数は「マップ」と読みます。英語の&#8221;map&#8221;はプログラミング用語で「配列の各要素に関数を適用する操作」を意味し、Excel関数名もこの概念から命名されています。</p>



<p class="wp-block-paragraph">ExcelのMAP関数は、配列の各セルにLAMBDAを適用し、<strong>同じサイズの新しい配列を返す</strong>関数です。LAMBDA（無名関数を定義するためのExcel関数）と組み合わせて使います。Microsoft 365で導入されたLAMBDAヘルパー関数の1つで、セル単位の一括変換を1つの数式で実現できます。</p>



<p class="wp-block-paragraph">たとえばA1:C2の6セルすべてを二乗したい場合、通常はD1にセル参照の数式を書いてコピーする必要があります。MAPを使えば、1つの数式で6セル分の計算結果をスピル（自動展開）できます。これがMAPの最大の魅力です。</p>



<p class="wp-block-paragraph">ポイントは「入力配列と出力配列のサイズが同じ」という性質です。行数も列数も変わらず、各セルの値だけが変換されます。この性質が、BYROWやBYCOLとの決定的な違いになります。</p>



<h3 class="wp-block-heading"><span id="toc2">LAMBDAヘルパー関数グループとは</span></h3>



<p class="wp-block-paragraph">LAMBDAヘルパー関数とは、LAMBDA関数と組み合わせて使う前提で設計された関数群の総称です。具体的には以下の6つが該当します。</p>



<ul class="wp-block-list"><li>MAP：各セルにLAMBDAを適用して変換</li><li>BYROW：行ごとにLAMBDAを適用して集計</li><li>BYCOL：列ごとにLAMBDAを適用して集計</li><li>REDUCE：配列全体を1つの値に集約</li><li>SCAN：累積計算の途中経過をすべて返す</li><li>MAKEARRAY：指定したサイズの配列をゼロから生成</li></ul>



<p class="wp-block-paragraph">これらは2022年頃にExcel Microsoft 365とGoogleスプレッドシートの両方で導入されました。LAMBDA関数の基本を押さえておくと理解が早いので、初めての方は先に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の基本記事</a>を読んでおくとスムーズです。</p>



<h3 class="wp-block-heading"><span id="toc3">BYROW・BYCOL・REDUCEとの違いを3軸比較表で整理</span></h3>



<p class="wp-block-paragraph">MAPを正しく使い分けるには、似た仲間であるBYROW・BYCOL・REDUCEとの違いを把握することが近道です。下の表では「目的」「処理単位」「戻り値の形」の3軸で整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>目的</th><th>処理単位</th><th>戻り値の形</th></tr></thead><tbody><tr><td>MAP</td><td>セルごとに変換</td><td>1セル</td><td>入力と同じサイズ</td></tr><tr><td>BYROW</td><td>行ごとに集計</td><td>1行</td><td>N行×1列（縦1列）</td></tr><tr><td>BYCOL</td><td>列ごとに集計</td><td>1列</td><td>1行×N列（横1行）</td></tr><tr><td>REDUCE</td><td>全体を1値に集約</td><td>配列全体</td><td>単一の値</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この表をざっくり覚えておけば、「セル単位の変換か、行や列の集計か、全体の集約か」という観点で瞬時に判断できます。特にMAPだけは<strong>サイズが変わらない</strong>点を意識してください。行単位の集計については<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数の記事</a>、列単位の集計については<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数の記事</a>で詳しく解説しています。</p>



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



<p class="wp-block-paragraph">ここからはMAP関数の具体的な構文を見ていきましょう。引数の順番と役割を理解すれば、使い回しが効くようになります。</p>



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



<p class="wp-block-paragraph">MAP関数の公式な構文は以下のとおりです。</p>



<pre class="wp-block-code"><code>=MAP(配列1, [配列2, ...], LAMBDA(変数1, [変数2, ...], 計算式))</code></pre>



<p class="wp-block-paragraph">一見複雑に見えますが、やっていることはシンプルです。配列を1つ以上渡し、最後の引数でLAMBDAを使って「各セルに何をするか」を定義するだけです。最もシンプルな例を見てみましょう。</p>



<pre class="wp-block-code"><code>=MAP(A1:A5, LAMBDA(x, x*2))</code></pre>



<p class="wp-block-paragraph">この数式は、A1:A5の各セルの値を2倍にした新しい配列を返します。xといった変数名はLAMBDA内で自由に命名できます。</p>



<h3 class="wp-block-heading"><span id="toc6">引数の詳細</span></h3>



<p class="wp-block-paragraph">引数の意味を整理すると次のとおりです。</p>



<ul class="wp-block-list"><li><strong>配列1</strong>（必須）：変換したい1つ目の配列。範囲やテーブル列を指定します</li><li><strong>配列2, &#8230;</strong>（任意）：複数配列を扱う場合に追加。すべて同じサイズである必要があります</li><li><strong>LAMBDA</strong>（必須）：最後の引数。配列の数と同じ個数の変数を受け取り、計算式を定義します</li></ul>



<p class="wp-block-paragraph">重要なルールが2つあります。<strong>LAMBDAは必ず最後の引数</strong>でなければなりません。また、配列の個数とLAMBDAの変数の個数は必ず一致させてください。不一致の場合は<code>#VALUE!</code>エラーが発生します。</p>



<h3 class="wp-block-heading"><span id="toc7">BYROW・BYCOLとの構文の違い</span></h3>



<p class="wp-block-paragraph">BYROWやBYCOLとの構文の違いも確認しておきましょう。並べて見るとイメージが掴みやすくなります。</p>



<pre class="wp-block-code"><code>=MAP(A1:C3, LAMBDA(cell, cell*2))      // 各セルを2倍
=BYROW(A1:C3, LAMBDA(row, SUM(row)))   // 各行を合計
=BYCOL(A1:C3, LAMBDA(col, SUM(col)))   // 各列を合計</code></pre>



<p class="wp-block-paragraph">MAPはLAMBDAに1セルずつ渡すのに対し、BYROW・BYCOLは行や列の<strong>範囲ごと</strong>渡します。そのためLAMBDA内でSUMやAVERAGEなどの集計関数を使うのが自然です。ここが両者の大きな違いです。</p>



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



<p class="wp-block-paragraph">構文が分かったところで、実際の使い方を2パターン見ていきましょう。単一配列と複数配列のケースを押さえれば、応用が効くようになります。</p>



<h3 class="wp-block-heading"><span id="toc9">単一配列のセル単位変換（掛け算・条件分岐）</span></h3>



<p class="wp-block-paragraph">まずは1つの配列を変換する基本パターンです。Microsoftの公式ドキュメントで紹介されている例を見てみましょう。</p>



<pre class="wp-block-code"><code>=MAP(A1:C2, LAMBDA(a, IF(a&gt;4, a*a, a)))</code></pre>



<p class="wp-block-paragraph">この数式は、A1:C2の各セルについて「4より大きければ二乗、それ以外はそのまま返す」という条件分岐を行います。2行3列の入力に対し、同じ2行3列の結果がスピルで返ります。</p>



<p class="wp-block-paragraph">ポイントはLAMBDA内で<code>IF</code>を使っている点です。MAPのLAMBDAには任意のExcel関数が使えるので、条件分岐や関数の組み合わせも自由に書けます。単純な掛け算だけでなく、複雑な変換ロジックを1つの数式にまとめられるのが強みです。</p>



<h3 class="wp-block-heading"><span id="toc10">複数配列を組み合わせる（2列を演算して新配列を作る）</span></h3>



<p class="wp-block-paragraph">MAPは複数の配列を同時に処理することもできます。公式の使用例を見てみましょう。</p>



<pre class="wp-block-code"><code>=MAP(TableA[Col1], TableA[Col2], LAMBDA(a, b, AND(a, b)))</code></pre>



<p class="wp-block-paragraph">この数式はテーブルの2つの列を同時に読み込み、両方がTRUEであるかを判定した新しい列を返します。LAMBDAの変数<code>a</code>が1列目、<code>b</code>が2列目の値を受け取ります。</p>



<p class="wp-block-paragraph">複数配列を使うときの注意点は2つあります。まず<strong>すべての配列が同じサイズ</strong>である必要があります。次にLAMBDAの変数の個数と配列の個数を必ず一致させることです。サイズが違うと<code>#N/A</code>、変数の個数が違うと<code>#VALUE!</code>が発生します。</p>



<h2 class="wp-block-heading"><span id="toc11">MAP関数の実務活用例</span></h2>



<p class="wp-block-paragraph">ここからは実際の業務で使える具体例を見ていきましょう。MAP関数の真価は、日常業務の「ちょっとしたセル単位変換」を1つの数式で片付けられる点にあります。</p>



<h3 class="wp-block-heading"><span id="toc12">単価×数量を1つの数式でまとめて計算</span></h3>



<p class="wp-block-paragraph">よくある売上集計のシーンです。B列に単価、C列に数量があるとき、行ごとの金額を1つの数式でまとめて計算できます。</p>



<pre class="wp-block-code"><code>=MAP(B2:B11, C2:C11, LAMBDA(price, qty, price*qty))</code></pre>



<p class="wp-block-paragraph">従来は<code>=B2*C2</code>をD列にコピーする必要がありましたが、MAPなら1つの数式で済みます。数式の編集箇所が1つに集約され、メンテナンス性が大きく向上します。</p>



<p class="wp-block-paragraph">さらに消費税込みの金額を返したい場合も、LAMBDA内で調整するだけです。<code>LAMBDA(price, qty, price<em>qty</em>1.1)</code>のように書けば、10%の税込み価格を一括計算できます。</p>



<h3 class="wp-block-heading"><span id="toc13">文字列の条件変換（フラグ付与）</span></h3>



<p class="wp-block-paragraph">文字列操作にもMAPは強力です。たとえばA列のステータスに応じて「対応要」「保留」「完了」といったラベルを付けたい場合を考えます。</p>



<pre class="wp-block-code"><code>=MAP(A2:A20, LAMBDA(s, IF(s=&quot;NG&quot;, &quot;対応要&quot;, IF(s=&quot;保留&quot;, &quot;保留&quot;, &quot;完了&quot;))))</code></pre>



<p class="wp-block-paragraph">この数式はA列の各セルを読み取り、条件に応じてラベル文字列を返します。結果はA2:A20と同じサイズの配列としてスピルされるため、ラベル列を別途手動で埋める必要がありません。</p>



<p class="wp-block-paragraph">特にデータクレンジングや前処理のフェーズで威力を発揮します。元データを触らずに変換後の値を別の位置に表示できるので、監査対応にも便利です。</p>



<h3 class="wp-block-heading"><span id="toc14">IFとの組み合わせ</span></h3>



<p class="wp-block-paragraph">MAPとIFは相性がよく、条件分岐を含む変換が頻繁に登場します。たとえば閾値に応じて変換ルールを切り替えたい場合はこのように書けます。</p>



<pre class="wp-block-code"><code>=MAP(A1:C2, LAMBDA(a, IF(a&gt;4, a*a, a*2)))</code></pre>



<p class="wp-block-paragraph">この数式は、4より大きい値は二乗、それ以下は2倍というルールで変換します。閾値や計算式を変えるだけで、さまざまなビジネスロジックに応用できます。</p>



<p class="wp-block-paragraph">もう一歩進んで、FILTERと組み合わせれば複数条件の絞り込みも実現できます。</p>



<pre class="wp-block-code"><code>=FILTER(D2:E11, MAP(D2:D11, E2:E11, LAMBDA(s, c, AND(s=&quot;Large&quot;, c=&quot;Red&quot;))))</code></pre>



<p class="wp-block-paragraph">この数式はD列が「Large」かつE列が「Red」の行だけを抽出します。MAPがTRUE/FALSEの配列を作り、FILTERの条件として機能する仕組みです。</p>



<h2 class="wp-block-heading"><span id="toc15">BYROWとMAPはどちらを使うべきか？</span></h2>



<p class="wp-block-paragraph">この記事の核心部分です。「BYROWとMAP、結局どちらを使うべき？」という問いに、明確な答えを出しておきます。</p>



<h3 class="wp-block-heading"><span id="toc16">行単位集計 vs セル単位変換</span></h3>



<p class="wp-block-paragraph">答えはシンプルです。<strong>行ごとに1つの値へ集計したいならBYROW、セル単位で値を変換したいならMAP</strong>です。</p>



<p class="wp-block-paragraph">たとえばB:D列に売上3ヶ月分があり「各行の3ヶ月合計」を出したいなら、行単位集計なのでBYROWです。</p>



<pre class="wp-block-code"><code>=BYROW(B2:D11, LAMBDA(row, SUM(row)))</code></pre>



<p class="wp-block-paragraph">結果は10行×1列の縦1列として返ります。一方「各セルを税込み価格に変換したい」なら、セル単位変換なのでMAPです。</p>



<pre class="wp-block-code"><code>=MAP(B2:D11, LAMBDA(cell, cell*1.1))</code></pre>



<p class="wp-block-paragraph">結果は10行×3列と、入力と同じサイズで返ります。戻り値の形が違うので、後続の数式やレイアウトにも影響します。</p>



<h3 class="wp-block-heading"><span id="toc17">判断フローチャート</span></h3>



<p class="wp-block-paragraph">迷ったときは以下の順で判断すると確実です。</p>



<ol class="wp-block-list"><li><strong>出力のサイズを考える</strong>：入力と同じ形にしたい → MAP／縦1列にしたい → BYROW／横1行にしたい → BYCOL／1つの値にしたい → REDUCE</li><li><strong>処理単位を考える</strong>：1セルずつ → MAP／1行まとめて → BYROW／1列まとめて → BYCOL</li><li><strong>LAMBDAに集計関数を使うか</strong>：使わない → MAPの可能性が高い／SUM・AVERAGEなどを使う → BYROWやBYCOLの可能性が高い</li></ol>



<p class="wp-block-paragraph">この3ステップで大半の迷いは解消します。「戻り値の形」から逆算して考えるとミスが減ります。</p>



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



<p class="wp-block-paragraph">MAP関数を使い始めると、いくつかのエラーに遭遇することがあります。公式ドキュメントに明記されているエラーを中心に、対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc19">#SPILL!エラー</span></h3>



<p class="wp-block-paragraph"><code>#SPILL!</code>はスピル範囲に障害物があるときに発生します。MAPは入力と同じサイズの配列を返すため、出力先のセルが他の値で埋まっているとこのエラーになります。</p>



<p class="wp-block-paragraph">対処法はシンプルで、スピル先のセルを空けるだけです。数式を入れたセルの下や右に余計な値が残っていないか確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">#VALUE!エラー</span></h3>



<p class="wp-block-paragraph"><code>#VALUE!</code>はLAMBDAの書き方が正しくないときに発生します。公式ドキュメントでは「Incorrect Parameters（パラメータ数不正）」として説明されています。</p>



<p class="wp-block-paragraph">よくある原因は、配列の個数とLAMBDAの変数の個数が一致していないケースです。たとえば<code>=MAP(A1:A5, B1:B5, LAMBDA(a, a<em>2))</code>のように、配列が2つなのに変数が1つだとエラーになります。正しくは<code>LAMBDA(a, b, a</em>b)</code>のように変数を2つ書きます。</p>



<p class="wp-block-paragraph">また<code>#CALC!</code>エラーが出る場合は、LAMBDA内部が配列を返してしまっているケースです。MAPのLAMBDAは「1セルにつき1つの値」を返す必要があります。</p>



<h3 class="wp-block-heading"><span id="toc21">#N/Aエラー（複数配列のサイズ不一致）</span></h3>



<p class="wp-block-paragraph"><code>#N/A</code>は複数配列のサイズが異なるときに、不一致のセルで発生します。たとえば<code>=MAP(A1:A10, B1:B8, LAMBDA(a, b, a+b))</code>のように行数が違うと、9行目と10行目が<code>#N/A</code>になります。</p>



<p class="wp-block-paragraph">対処法は、すべての配列を<strong>まったく同じサイズ</strong>に揃えることです。範囲選択時にはセルの行数・列数を必ず確認しましょう。</p>



<p class="wp-block-paragraph">なお<code>#NAME?</code>エラーが出る場合は、お使いのExcelがMAP関数に対応していない可能性が高いです。MAP関数が使えるのはExcel Microsoft 365・Excel for the web・Excel 2024です。Excel 2021以前は非対応です。</p>



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



<p class="wp-block-paragraph">GoogleスプレッドシートにもMAP関数があり、構文はExcelとほぼ同一です。<code>=MAP(配列1, LAMBDA(x, 計算式))</code>という基本形はそのまま通用します。複数配列への対応も同様です。</p>



<p class="wp-block-paragraph">主な違いは2点あります。1つは<strong>スピルの扱い</strong>です。Excel版はテーブル内でスピル系関数が使えないという制約がありますが、Sheets版にはこの制約がなく<code>#SPILL!</code>も発生しにくい傾向があります。</p>



<p class="wp-block-paragraph">もう1つは<strong>関連エコシステム</strong>の違いです。Sheets版はArrayFormulaとの組み合わせなど、スプレッドシート独自の配列処理との相互作用があります。両ツールを併用している方は、スプレッドシート版MAP関数の記事と読み比べると理解が深まります。</p>



<p class="wp-block-paragraph">基本的な思想は同じなので、Excelで覚えた使い方はSheetsでもほぼそのまま通用します。LAMBDAヘルパー関数はクラウド時代の表計算の共通語だと考えてよいでしょう。</p>



<h2 class="wp-block-heading"><span id="toc23">よくある質問（MAP関数）</span></h2>



<h3 class="wp-block-heading"><span id="toc24">Q1. MAP関数はExcel 2021では使えませんか？</span></h3>



<p class="wp-block-paragraph">使えません。MAP関数はMicrosoft 365・Excel for the web・Excel 2024でのみ動作します。Excel 2021以前はLAMBDA関数自体に対応していないため、MAP関数も利用できません。</p>



<p class="wp-block-paragraph">Excel 2021以前で似た処理をしたい場合は、セルごとに数式を入力してコピーする従来の方法を使うことになります。Microsoft 365に移行できる環境であれば、MAP関数をはじめとするLAMBDAヘルパー関数が一気に使えるようになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc25">Q2. MAP関数内のLAMBDAにSUMやAVERAGEを使うことはできますか？</span></h3>



<p class="wp-block-paragraph">使えますが、用途によっては別の関数の方が適しています。</p>



<p class="wp-block-paragraph">MAP関数は「1セルに対して1つの値を返す」設計のため、LAMBDA内でSUMやAVERAGEを書くと、1つのセルに配列全体の合計や平均が入力されます。これは「各行のSUMを計算して縦1列に返す」BYROWの役割とは異なります。</p>



<p class="wp-block-paragraph">行ごとの合計を縦1列で取得したいなら<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数</a>、列ごとの合計を横1行で取得したいなら<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数</a>を使いましょう。</p>



<h3 class="wp-block-heading"><span id="toc26">Q3. MAPで生成した配列を別の数式の入力に使えますか？</span></h3>



<p class="wp-block-paragraph">使えます。MAPがスピルした配列全体を参照するには、数式があるセル番地に<code>#</code>を付けた「スピル演算子」を使います。</p>



<p class="wp-block-paragraph">たとえばMAP関数がセルD2に入っていて税込み価格の配列を返している場合、<code>=SUM(D2#)</code> と書くとその配列全体の合計が求まります。<code>D2#</code> がスピル配列全体への参照です。</p>



<p class="wp-block-paragraph">この書き方を覚えると、MAPで変換した配列をSUMやAVERAGEへの入力として連結でき、複雑な集計も1つのフローで完結させられますよ。</p>



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



<p class="wp-block-paragraph">ExcelのMAP関数は、配列の各セルにLAMBDAを適用して<strong>同じサイズの新しい配列を返す</strong>関数です。セル単位の一括変換を1つの数式で実現できる点が最大の魅力です。</p>



<p class="wp-block-paragraph">この記事のポイントを振り返ります。</p>



<ul class="wp-block-list"><li><strong>構文</strong>：<code>=MAP(配列1, [配列2, ...], LAMBDA(変数1, [変数2, ...], 計算式))</code>。LAMBDAは必ず最後の引数</li><li><strong>戻り値</strong>：入力配列と同じサイズ。MAPだけはサイズが縮まない</li><li><strong>使い分け</strong>：セル単位変換ならMAP、行単位集計なら<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a>、列単位集計なら<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a>、全体集約ならREDUCE</li><li><strong>対応バージョン</strong>：Microsoft 365 / Excel for the web / Excel 2024。Excel 2021以前は非対応</li><li><strong>よくあるエラー</strong>：<code>#VALUE!</code>（変数の個数不一致）、<code>#N/A</code>（配列サイズ不一致）、<code>#NAME?</code>（バージョン非対応）、<code>#SPILL!</code>（スピル範囲障害）</li></ul>



<p class="wp-block-paragraph">「BYROWとMAPどちらを使うべきか？」に迷ったら、出力の形から逆算して判断してください。入力と同じ形にしたいならMAP、縦1列にしたいならBYROWです。この判断軸を覚えておけば、LAMBDAヘルパー関数を自在に使いこなせます。</p>



<p class="wp-block-paragraph">LAMBDA関数の基本をさらに学びたい方は<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の解説記事</a>を、行や列の集計を深掘りしたい方は<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a>・<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a>の記事もあわせてご覧ください。LAMBDAヘルパー関数クラスター全体を押さえれば、Excelの配列処理は一段上のレベルに到達します。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-map/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのBYROW関数の使い方｜行ごとに関数を適用</title>
		<link>https://mashukabu.com/excel-function-howto-use-byrow/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-byrow/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 12:10:17 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[BYROW]]></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=5901</guid>

					<description><![CDATA[ExcelのBYROW関数の使い方を初心者向けに解説。行ごとにSUM・AVERAGEを一発で集計できます。BYCOL関数との違いをわかりやすい比較表で整理。#SPILL!・#VALUE!・#CALC!エラーの対処法も網羅しています。]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">BYROW関数とは？</a><ol><li><a href="#toc3" tabindex="0">BYCOLとの違いを比較表で確認</a></li><li><a href="#toc4" tabindex="0">対応バージョン（Microsoft 365 / Excel 2024）</a></li></ol></li><li><a href="#toc5" tabindex="0">BYROW関数の書き方</a><ol><li><a href="#toc6" tabindex="0">構文と引数の説明</a></li><li><a href="#toc7" tabindex="0">LAMBDAが必須な理由</a></li></ol></li><li><a href="#toc8" tabindex="0">基本の使い方</a><ol><li><a href="#toc9" tabindex="0">行ごとの合計（SUM）</a></li><li><a href="#toc10" tabindex="0">行ごとの平均（AVERAGE）</a></li><li><a href="#toc11" tabindex="0">行ごとの最大値（MAX）</a></li></ol></li><li><a href="#toc12" tabindex="0">応用例</a><ol><li><a href="#toc13" tabindex="0">BYROW × IFで条件付き行集計</a></li><li><a href="#toc14" tabindex="0">複合計算をネストする</a></li><li><a href="#toc15" tabindex="0">行ごとの最大値・条件付き集計（MAXIFS/MINIFS同等）</a></li><li><a href="#toc16" tabindex="0">行ごとの空白カウント・入力チェック</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">#SPILL! エラー</a></li><li><a href="#toc19" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc20" tabindex="0">#CALC! エラー</a></li><li><a href="#toc21" tabindex="0">#NAME? エラー</a></li></ol></li><li><a href="#toc22" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc23" tabindex="0">Q: BYROW関数はGoogleスプレッドシートでも使えますか？</a></li><li><a href="#toc24" tabindex="0">Q: BYROW内でIF関数を使えますか？</a></li><li><a href="#toc25" tabindex="0">Q: BYROWの結果を合計（SUMBYROW）したい場合は？</a></li></ol></li><li><a href="#toc26" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p class="wp-block-paragraph">ExcelでSUMやAVERAGEを行ごとに何十行もコピペして集計していませんか。行が増えるたびに数式を貼り直すのは地味に時間がかかります。そして1箇所ズレるだけで集計ミスが発生することもありますよね。</p>



<p class="wp-block-paragraph">そんな課題を一発で解決してくれるのが、Microsoft 365に搭載されている<strong>BYROW関数</strong>です。BYROW関数を使えば、表全体に対して「行ごとに合計」「行ごとに平均」といった処理を、1つの数式でまとめて実行できます。スピル（数式の結果が自動で隣接セルに展開される機能）によって、結果は縦1列にきれいに並びます。</p>



<p class="wp-block-paragraph">この記事では、BYROW関数の構文から基本の使い方、BYCOL関数との違い、エラー対処法までを網羅的に解説します。実務ですぐ使えるサンプルを中心にまとめました。読み終わる頃には、行ごとの集計を「1つの数式でサクッと片付けられる人」になっているはずです。</p>



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



<p class="wp-block-paragraph">BYROW関数（読み方：バイロウ）は、配列の各行に対してLAMBDA関数を適用し、1列の配列として結果を返す関数です。関数名は「BY（〜ごとに）＋ROW（行）」に由来します。LAMBDA関数とは、自作の処理を関数化する仕組みのことです。</p>



<p class="wp-block-paragraph">たとえば「3行×4列の売上表」に対してBYROWでSUMを適用すると、各行の合計値が縦1列に3つ並びます。従来のSUMをD1、D2、D3&#8230;と個別にコピペしていた作業を、1つの数式に置き換えられるのが最大のメリットです。</p>



<p class="wp-block-paragraph">BYROW関数は<strong>LAMBDAヘルパー関数</strong>と呼ばれるグループの1つです。2022年2月にMicrosoft 365向けに追加されました。同じグループにはBYCOL、MAP、REDUCE、SCAN、MAKEARRAY、ISOMITTEDがあります。いずれもLAMBDAと組み合わせて配列処理を柔軟に行うための関数です。</p>



<p class="wp-block-paragraph">スピル機能を前提としているため、1つのセルに数式を入力するだけで結果が自動展開されます。行数が可変のデータでも、数式側を書き換える必要はほぼありません。</p>



<h3 class="wp-block-heading"><span id="toc3">BYCOLとの違いを比較表で確認</span></h3>



<p class="wp-block-paragraph">BYROWとBYCOLは兄弟のような関係で、処理の向きが違うだけで構造はほぼ同じです。どちらを使うべきか迷ったら、下の比較表でサクッと整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較軸</th><th>BYROW</th><th>BYCOL</th></tr></thead><tbody><tr><td>処理単位</td><td>行ごと</td><td>列ごと</td></tr><tr><td>戻り値のサイズ</td><td>1列×N行（縦長）</td><td>N列×1行（横長）</td></tr><tr><td>スピル方向</td><td>縦方向</td><td>横方向</td></tr><tr><td>典型用途</td><td>行ごとの合計・平均</td><td>列ごとの月次集計</td></tr><tr><td>LAMBDA引数</td><td>row（1行分の配列）</td><td>col（1列分の配列）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">行ごとの集計（生徒ごとの合計点、商品ごとの売上など）にはBYROW。列ごとの集計（月ごとの売上、項目ごとの平均など）にはBYCOL。こう覚えておけば間違いありません。列方向の処理については<a href="https://mashukabu.com/excel-function-howto-use-bycol/">ExcelのBYCOL関数の使い方</a>で詳しく解説しているので、セットで読むとLAMBDAヘルパー関数の理解が一気に深まります。</p>



<h3 class="wp-block-heading"><span id="toc4">対応バージョン（Microsoft 365 / Excel 2024）</span></h3>



<p class="wp-block-paragraph">BYROW関数はMicrosoft公式ドキュメントによると、以下の環境で利用できます。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365</li><li>Excel for Microsoft 365 for Mac</li><li>Excel for the web（ブラウザ版）</li><li>Excel 2024</li><li>Excel 2024 for Mac</li></ul>



<p class="wp-block-paragraph">一方、<strong>Excel 2021やExcel 2019以前では使えません</strong>。古いバージョンで使うと#NAME?エラーが返ります。オフィスのPCが買い切り版の古いExcelだった場合は、Microsoft 365への移行を検討するか、従来のSUM配列数式で代替する必要があります。</p>



<h2 class="wp-block-heading"><span id="toc5">BYROW関数の書き方</span></h2>



<p class="wp-block-paragraph">BYROW関数は引数が2つだけのシンプルな構造です。ただしLAMBDA関数との組み合わせが必須のため、初見だと少し戸惑うかもしれません。ここで構文と引数をしっかり押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">構文と引数の説明</span></h3>



<p class="wp-block-paragraph">BYROW関数の公式な構文は次の通りです。</p>



<pre class="wp-block-code"><code>=BYROW(array, lambda(row))</code></pre>



<p class="wp-block-paragraph">2つの引数の役割は以下の通りです。</p>



<ul class="wp-block-list"><li><strong>array</strong>（必須）：処理対象の配列または範囲。たとえば<code>A1:C3</code>のような複数行・複数列の範囲を指定します。</li><li><strong>lambda</strong>（必須）：1つのパラメータ（row）を受け取り、1つの値を返すLAMBDA関数。<code>row</code>には各行が1行分の配列として順番に渡されます。</li></ul>



<p class="wp-block-paragraph">戻り値は「N列×M行の配列」を渡すと「1列×M行の配列」を返します。3行×4列を渡せば、縦に3つ並んだ結果が返ってくるイメージです。</p>



<p class="wp-block-paragraph">具体例で見てみましょう。A1:C3に数値が入っているとします。</p>



<pre class="wp-block-code"><code>=BYROW(A1:C3, LAMBDA(row, SUM(row)))</code></pre>



<p class="wp-block-paragraph">この数式は「A1:C3の各行に対してSUMを適用し、1列×3行の結果を返す」という意味になります。1行目の合計、2行目の合計、3行目の合計が縦に並んでスピルします。</p>



<h3 class="wp-block-heading"><span id="toc7">LAMBDAが必須な理由</span></h3>



<p class="wp-block-paragraph">BYROW関数の第2引数には、必ずLAMBDA関数を渡す必要があります。単に<code>SUM</code>とだけ書いても動作しません。</p>



<pre class="wp-block-code"><code># NG：これは動かない
=BYROW(A1:C3, SUM)

# OK：LAMBDAでラップする
=BYROW(A1:C3, LAMBDA(row, SUM(row)))</code></pre>



<p class="wp-block-paragraph">理由は、BYROWが「各行をどう処理するか」を呼び出し側にカスタマイズさせる設計だからです。LAMBDAを使うことで、SUM以外にもAVERAGEや独自の計算式を自由に組み込めます。LAMBDA関数の基礎が不安な方は、先に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">ExcelのLAMBDA関数の使い方</a>で基本構文を確認しておくとスムーズです。</p>



<p class="wp-block-paragraph">なお、LAMBDAの引数名（ここでは<code>row</code>）は自由に決められます。<code>r</code>でも<code>gyo</code>でも動作しますが、可読性を重視して<code>row</code>にしておくのが無難です。</p>



<h2 class="wp-block-heading"><span id="toc8">基本の使い方</span></h2>



<p class="wp-block-paragraph">ここからは、実務でよく使うSUM・AVERAGE・MAXを例に、BYROW関数の基本パターンを見ていきます。どれも同じ構造で応用が効くので、1つ覚えれば他もすぐ書けるようになります。</p>



<h3 class="wp-block-heading"><span id="toc9">行ごとの合計（SUM）</span></h3>



<p class="wp-block-paragraph">もっとも使用頻度が高いのが、行ごとの合計です。たとえば下のような売上表があるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th><th>B列</th><th>C列</th></tr></thead><tbody><tr><td>100</td><td>200</td><td>150</td></tr><tr><td>80</td><td>90</td><td>110</td></tr><tr><td>200</td><td>180</td><td>220</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この3行それぞれの合計を、D1セルに1つの数式で出すには次のように書きます。</p>



<pre class="wp-block-code"><code>=BYROW(A1:C3, LAMBDA(row, SUM(row)))</code></pre>



<p class="wp-block-paragraph">D1に入力した瞬間、D1には450、D2には280、D3には600がスピルされます。行が増えたら範囲を<code>A1:C10</code>のように広げるだけで、数式のコピペは不要です。</p>



<p class="wp-block-paragraph">従来の方法ではD1に<code>=SUM(A1:C1)</code>と書いてD3まで引っ張る必要がありました。BYROWなら1つの数式で完結するため、数式のメンテナンス性が段違いです。</p>



<h3 class="wp-block-heading"><span id="toc10">行ごとの平均（AVERAGE）</span></h3>



<p class="wp-block-paragraph">平均値もSUMと同じ感覚で書けます。LAMBDAの中身をSUMからAVERAGEに差し替えるだけです。</p>



<pre class="wp-block-code"><code>=BYROW(A1:C3, LAMBDA(row, AVERAGE(row)))</code></pre>



<p class="wp-block-paragraph">上のサンプル表に適用すると、D1には150、D2には約93.3、D3には200が縦に並びます。テストの点数表で生徒ごとの平均点を出したいときなどに、そのまま使えるパターンです。</p>



<p class="wp-block-paragraph">小数点以下を整えたいときはROUND関数でラップできます。<code>LAMBDA(row, ROUND(AVERAGE(row), 1))</code>のように書けば、小数第1位で丸めた結果がスピルします。</p>



<h3 class="wp-block-heading"><span id="toc11">行ごとの最大値（MAX）</span></h3>



<p class="wp-block-paragraph">最大値を取り出すパターンもほぼ同じ構造です。LAMBDAの中でMAXを呼び出します。</p>



<pre class="wp-block-code"><code>=BYROW(A1:C3, LAMBDA(row, MAX(row)))</code></pre>



<p class="wp-block-paragraph">サンプル表に適用すると、D1には200、D2には110、D3には220が返ります。「各行で最も売れた商品の金額」や「生徒ごとの最高点」を一覧化したいときに便利です。</p>



<p class="wp-block-paragraph">同じ要領でMIN・COUNT・COUNTAなども使えます。ポイントは「LAMBDAの中で<code>row</code>を引数として渡せる集計関数なら何でもOK」ということです。</p>



<h2 class="wp-block-heading"><span id="toc12">応用例</span></h2>



<p class="wp-block-paragraph">基本を押さえたら、次は実務で差がつく応用パターンに進みましょう。BYROWはLAMBDAの中に任意の計算式を書けるため、条件付き集計やネスト計算にも対応できます。</p>



<h3 class="wp-block-heading"><span id="toc13">BYROW × IFで条件付き行集計</span></h3>



<p class="wp-block-paragraph">BYROWの強みは、LAMBDAの中にIF関数を組み込んで条件付きの行集計ができる点です。たとえば「行の合計が100以上なら達成、未満なら未達」というフラグを立てたい場合、次のように書けます。</p>



<pre class="wp-block-code"><code>=BYROW(A1:C3, LAMBDA(row, IF(SUM(row)&gt;=100, &quot;達成&quot;, &quot;未達&quot;)))</code></pre>



<p class="wp-block-paragraph">上のサンプル表なら、D1「達成」、D2「達成」、D3「達成」が縦に並びます。仮にB2を「10」、C2を「5」に変えれば、D2は「未達」に切り替わります。</p>



<p class="wp-block-paragraph">SUMIFSでは書きにくい「行内の複雑な条件判定」もBYROWなら自然に書けます。たとえば「すべての列が50以上ならOK」のような判定も、<code>LAMBDA(row, IF(MIN(row)>=50, "OK", "NG"))</code>のように書けば一発です。</p>



<h3 class="wp-block-heading"><span id="toc14">複合計算をネストする</span></h3>



<p class="wp-block-paragraph">BYROWのLAMBDA内部では、複数の関数を自由にネストできます。たとえば「各行の合計から最小値を引いた値」を出したい場合は次の通りです。</p>



<pre class="wp-block-code"><code>=BYROW(A1:C3, LAMBDA(row, SUM(row) - MIN(row)))</code></pre>



<p class="wp-block-paragraph">さらに複雑な例として、「各行の最大値と最小値の差（レンジ）」を算出するパターンもあります。</p>



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



<p class="wp-block-paragraph">このように、LAMBDA内部は通常のExcel数式と同じ感覚で計算式を書けます。ただし<strong>LAMBDAは各行について必ず1つの値を返す必要がある</strong>点には注意が必要です。FILTERやSORTのように配列を返す関数を入れると、後述する#CALC!エラーが発生します。</p>



<p class="wp-block-paragraph">なお、Googleスプレッドシート版のBYROWは2022年12月のアップデートで機能拡張されました。LAMBDA内にFILTER・SORT・UNIQUEなど配列を返す関数を使えるようになっています。Excel版とは仕様が異なるため、両方使う方は注意してください。</p>



<h3 class="wp-block-heading"><span id="toc15">行ごとの最大値・条件付き集計（MAXIFS/MINIFS同等）</span></h3>



<p class="wp-block-paragraph">「行ごとの最大値だけをまとめて並べたい」という場面は意外と多いものです。各行にMAX関数を1つずつコピペしていくと、行が増えるたびに数式の貼り直しが発生します。BYROWとLAMBDAを組み合わせれば、この作業を1つの数式に置き換えられます。</p>



<pre class="wp-block-code"><code>=BYROW(B2:E10, LAMBDA(row, MAX(row)))</code></pre>



<p class="wp-block-paragraph">この数式は、B2:E10の各行に対してMAXを適用し、行ごとの最大値を縦1列で返します。9行分の最大値が一度にスピルするため、従来のMAXコピペ地獄から解放されます。</p>



<p class="wp-block-paragraph">MAXをMINに差し替えれば行ごとの最小値、SUMIFSのような条件付き集計もLAMBDA内のIFで表現できます。たとえば<code>LAMBDA(row, MAX(IF(row>=50, row)))</code>のように書けば、50以上の値だけを対象にした行ごとの最大値も求められます。</p>



<h3 class="wp-block-heading"><span id="toc16">行ごとの空白カウント・入力チェック</span></h3>



<p class="wp-block-paragraph">未入力セルを行ごとに数えたいときも、BYROWが活躍します。COUNTBLANK関数をLAMBDA内に組み込むだけです。</p>



<pre class="wp-block-code"><code>=BYROW(B2:E10, LAMBDA(row, COUNTBLANK(row)))</code></pre>



<p class="wp-block-paragraph">この数式は、各行の未入力セル数を1列で返します。出席管理シートで「未提出の項目数」を一覧化したり、入力フォームの「未記入欄の数」をチェックしたりする用途にぴったりです。</p>



<p class="wp-block-paragraph">数えた結果をそのまま条件判定につなげることもできます。<code>LAMBDA(row, IF(COUNTBLANK(row)>0, "未完了", "完了"))</code>のように書けば、空白が1つでもある行に「未完了」フラグを立てられます。入力漏れの発見が一気に楽になります。</p>



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



<p class="wp-block-paragraph">BYROW関数はLAMBDAと組み合わせる都合上、慣れないうちはエラーに遭遇しがちです。ここではMicrosoft公式ドキュメントに基づいて、発生しうる4種類のエラーと対処法をまとめておきます。</p>



<h3 class="wp-block-heading"><span id="toc18">#SPILL! エラー</span></h3>



<p class="wp-block-paragraph">#SPILL!エラーは「スピル先にスペースが足りない」ときに発生します。BYROWは結果を縦方向に展開するため、スピル先のセルが空いていないと展開できません。</p>



<ul class="wp-block-list"><li><strong>原因</strong>：スピル先の範囲に既存データが残っている、結合セルがある、またはテーブル内（Ctrl+Tで作成したテーブル）でBYROWを使っている。</li><li><strong>対処</strong>：スピル先のセルをクリアする、結合セルを解除する、テーブル外のセルに数式を入力する。</li></ul>



<p class="wp-block-paragraph">テーブル機能の中ではスピル関数が動かないケースが多いです。BYROWを使うセルはテーブルの外に置くのが安全です。</p>



<h3 class="wp-block-heading"><span id="toc19">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph">#VALUE!エラーは、LAMBDA関数の書き方そのものに問題があるときに発生します。公式では「無効なLAMBDA関数またはパラメータ数が不正」と表現されています。</p>



<ul class="wp-block-list"><li><strong>原因</strong>：LAMBDAが構文エラーになっている、または引数の数が合っていない（例：<code>LAMBDA(row, col, SUM(row))</code>のように余計なパラメータを渡している）。</li><li><strong>対処</strong>：LAMBDAの引数を1つ（<code>row</code>のみ）に修正する。そしてLAMBDAの中身が有効な数式になっているか確認する。</li></ul>



<p class="wp-block-paragraph">BYROW用のLAMBDAは必ず<strong>単一パラメータ</strong>である必要があります。BYCOLから流用する場合、<code>col</code>を<code>row</code>に書き換え忘れて動かなくなるケースが多いので注意しましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">#CALC! エラー</span></h3>



<p class="wp-block-paragraph">#CALC!エラーはBYROW特有のつまずきポイントで、競合記事ではあまり触れられていません。ここが理解できると一気に使いこなせるようになります。</p>



<ul class="wp-block-list"><li><strong>原因</strong>：LAMBDA関数が提供されていない、またはLAMBDAが単一値以外（配列・複数値）を返している。</li><li><strong>対処</strong>：LAMBDAの戻り値が必ず1つの値になるよう修正する。FILTER・SORT・UNIQUEなど配列を返す関数を直接使わない。</li></ul>



<p class="wp-block-paragraph">具体例を見てみましょう。</p>



<pre class="wp-block-code"><code># NG：FILTERは配列を返すので#CALC!になる
=BYROW(A1:C3, LAMBDA(row, FILTER(row, row&gt;50)))

# OK：COUNTで単一値にして返す
=BYROW(A1:C3, LAMBDA(row, COUNT(FILTER(row, row&gt;50))))</code></pre>



<p class="wp-block-paragraph">「LAMBDAは各行について必ず1つの値を返す」というルールを守れば、#CALC!エラーは回避できます。</p>



<h3 class="wp-block-heading"><span id="toc21">#NAME? エラー</span></h3>



<p class="wp-block-paragraph">#NAME?エラーは、関数名が認識されないときに出ます。BYROWの場合、ほとんどがバージョン起因です。</p>



<ul class="wp-block-list"><li><strong>原因</strong>：Excel 2021やExcel 2019など非対応バージョンで使用している、または関数名のスペルミス（<code>BYROW</code>を<code>BIROW</code>と書いているなど）。</li><li><strong>対処</strong>：Microsoft 365またはExcel 2024を使う。スペルミスがないか確認する。</li></ul>



<p class="wp-block-paragraph">職場のPCで#NAME?が出る場合は、まずExcelのバージョンを確認してください。「ファイル」→「アカウント」から製品バージョンが確認できます。Microsoft 365以外ならBYROWは使えません。</p>



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



<p class="wp-block-paragraph">最後に、BYROW関数についてよく寄せられる質問をまとめておきます。実務での疑問解消に役立ててください。</p>



<h3 class="wp-block-heading"><span id="toc23">Q: BYROW関数はGoogleスプレッドシートでも使えますか？</span></h3>



<p class="wp-block-paragraph">使えます。GoogleスプレッドシートにもBYROW関数が搭載されており、Excelと同じ書き方で動作します。ただしGoogleスプレッドシートではLAMBDA関数の扱いがやや異なる場合があるため、複雑な数式では動作確認が必要です。</p>



<h3 class="wp-block-heading"><span id="toc24">Q: BYROW内でIF関数を使えますか？</span></h3>



<p class="wp-block-paragraph">使えます。<code>=BYROW(範囲, LAMBDA(row, IF(SUM(row)>100, "達成", "未達")))</code>のように、LAMBDA内でほぼあらゆる関数を使えます。集計だけでなく、条件判定や文字列生成にも応用できます。</p>



<h3 class="wp-block-heading"><span id="toc25">Q: BYROWの結果を合計（SUMBYROW）したい場合は？</span></h3>



<p class="wp-block-paragraph">SUM関数でBYROWの結果を囲みます。<code>=SUM(BYROW(B2:E10, LAMBDA(row, MAX(row))))</code>のように書けば、各行の最大値の合計を求められます。</p>



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



<p class="wp-block-paragraph">ExcelのBYROW関数について、構文から応用まで一気に解説しました。ポイントを箇条書きで整理しておきます。</p>



<ul class="wp-block-list"><li><strong>BYROW関数</strong>は行ごとにLAMBDAを適用し、1列の結果をスピルで返す関数である。</li><li>構文は<code>=BYROW(array, lambda(row))</code>で、第2引数はLAMBDAが必須である。</li><li>対応バージョンはMicrosoft 365・Excel for the web・Excel 2024。Excel 2021以前では#NAME?エラーになる。</li><li>基本はSUM・AVERAGE・MAXを行ごとに適用するパターン。LAMBDA内部の関数を差し替えるだけで応用できる。</li><li>BYROW × IFで条件付き行集計ができる。SUMIFSで書きにくい複雑条件にも対応可能。</li><li>エラーは#SPILL!（スピル先不足）、#VALUE!（LAMBDAの書き方）、#CALC!（配列戻り値）、#NAME?（バージョン非対応）の4種類を押さえておけばOK。</li><li><strong>#CALC!エラー</strong>はLAMBDAが単一値以外を返した場合に発生する。FILTER・SORTなどをそのまま入れるとNG。</li></ul>



<p class="wp-block-paragraph">BYROWを一度覚えると、従来の「1行ごとにSUMをコピペ」作業からは完全に卒業できます。行数が増えても数式を書き換える必要がなく、可読性もメンテ性もアップします。</p>



<p class="wp-block-paragraph">次のステップとして、列方向の処理を扱う<a href="https://mashukabu.com/excel-function-howto-use-bycol/">ExcelのBYCOL関数の使い方</a>もセットで読んでおくとよいでしょう。LAMBDAヘルパー関数クラスター全体を体系的に理解できます。LAMBDA自体の書き方が気になった方は、<a href="https://mashukabu.com/excel-function-howto-use-lambda/">ExcelのLAMBDA関数の使い方</a>で基礎から復習しておくと安心です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-byrow/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-6" checked><label class="toc-title" for="toc-checkbox-6">目次</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>
