<?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>MAP関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/map%E9%96%A2%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 14:41:50 +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>MAP関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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-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">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>スプレッドシートのBYCOL関数の使い方｜各列にLAMBDA適用</title>
		<link>https://mashukabu.com/spreadsheet-bycol-function/</link>
					<comments>https://mashukabu.com/spreadsheet-bycol-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:37:57 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[BYCOL関数]]></category>
		<category><![CDATA[BYROW関数]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[MAP関数]]></category>
		<category><![CDATA[列ごとの集計]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4905</guid>

					<description><![CDATA[スプレッドシートのBYCOL関数で各列にLAMBDA処理を一括適用する方法を解説。BYROW関数・MAP関数との違いや、列ごとの合計・平均・最大値を一行で取得する実務パターンまで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「列ごとの合計」や「列ごとの平均」を出したいときに困りますよね。列の数だけSUM関数やAVERAGE関数を並べるのは手間ですし、列が増えるたびに数式をコピーするのも面倒です。</p>



<p class="wp-block-paragraph">BYCOL関数を使えば、すべての列に同じ計算を一括で適用できます。LAMBDA関数と組み合わせて「各列にこの処理をして」と指定するだけです。</p>



<p class="wp-block-paragraph">この記事では、BYCOL関数の基本から、BYROW関数やMAP関数との違いまでわかりやすく解説します。</p>




  <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">BYCOL関数とは？</a><ol><li><a href="#toc2" tabindex="0">BYCOL関数の基本構文</a></li><li><a href="#toc3" tabindex="0">LAMBDA関数とは？</a></li></ol></li><li><a href="#toc4" tabindex="0">BYCOL関数の基本的な使い方</a><ol><li><a href="#toc5" tabindex="0">サンプルデータ</a></li><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">BYCOL関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: 列ごとにデータの件数をカウントする</a></li><li><a href="#toc11" tabindex="0">パターン2: 列ごとに条件付きカウントする</a></li><li><a href="#toc12" tabindex="0">パターン3: 列ごとにユニークな値の数を数える</a></li><li><a href="#toc13" tabindex="0">パターン4: 列ごとの標準偏差を求める</a></li><li><a href="#toc14" tabindex="0">パターン5: 文字列の列ごとの結合</a></li></ol></li><li><a href="#toc15" tabindex="0">BYROW関数との違い・使い分け</a><ol><li><a href="#toc16" tabindex="0">BYCOL関数が向いている場面</a></li><li><a href="#toc17" tabindex="0">BYROW関数が向いている場面</a></li></ol></li><li><a href="#toc18" tabindex="0">MAP関数との違い・使い分け</a><ol><li><a href="#toc19" tabindex="0">MAP関数の使用例</a></li></ol></li><li><a href="#toc20" tabindex="0">LAMBDA系関数の全体像</a></li><li><a href="#toc21" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc22" tabindex="0">まとめ</a><ol><li><a href="#toc23" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">BYCOL関数（読み方: バイコル関数）は、配列やセル範囲の<strong>各列に対してLAMBDA関数を適用する</strong>関数です。結果は横1行に返ります。「by column（列ごとに）」が名前の由来で、列単位で処理を繰り返すイメージですね。</p>



<p class="wp-block-paragraph">たとえば、3行x4列の売上データにBYCOL関数でSUM処理を適用すると、4列それぞれの合計が横1行に並びます。列を追加しても数式を変更する必要がなく、自動で集計範囲が広がりますよ。</p>



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



<ul class="wp-block-list"><li>各列に同じ計算（合計・平均・最大値など）を一括で適用する</li><li>LAMBDA関数で処理内容を自由にカスタマイズできる</li><li>結果を横1行で返すため、集計行として使いやすい</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>BYCOL関数はGoogleスプレッドシート独自の関数です。Excelには同じ名前の関数がないため、Excelで同様の処理をしたい場合は、各列にSUM関数やAVERAGE関数を個別に入力してください。</p></blockquote>



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



<pre class="wp-block-code"><code>=BYCOL(配列, LAMBDA(列, 処理))</code></pre>



<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>配列</td><td>必須</td><td>処理対象のセル範囲または配列</td></tr><tr><td>LAMBDA(列, 処理)</td><td>必須</td><td>各列に適用する関数。「列」は各列を受け取る仮引数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA関数の仮引数（上の例では「列」）には好きな名前を付けられます。<code>col</code>や<code>c</code>でもOKです。この仮引数に各列のデータが1列ずつ渡されて、処理が実行されます。</p>



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



<p class="wp-block-paragraph">BYCOL関数を理解するには、LAMBDA関数の基本を知っておく必要があります。</p>



<p class="wp-block-paragraph">LAMBDA関数は「自分だけの関数を作れる」関数です。引数と処理内容を自分で定義できます。</p>



<pre class="wp-block-code"><code>=LAMBDA(引数, 処理)(値)</code></pre>



<p class="wp-block-paragraph">たとえば <code>=LAMBDA(x, x<em>2)(5)</code> と書くと、xに5が入って「5</em>2=10」が返ります。BYCOL関数の中では、このLAMBDA関数に各列のデータが自動的に渡される仕組みです。</p>



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



<p class="wp-block-paragraph">ここでは、月別の売上データをBYCOL関数で列ごとに集計する例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc5">サンプルデータ</span></h3>



<p class="wp-block-paragraph">A1:D4に以下のデータが入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>&nbsp;</td><td>4月</td><td>5月</td><td>6月</td></tr><tr><td>2</td><td>東京</td><td>100</td><td>120</td><td>110</td></tr><tr><td>3</td><td>大阪</td><td>80</td><td>90</td><td>85</td></tr><tr><td>4</td><td>名古屋</td><td>60</td><td>70</td><td>65</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc6">各列の合計を一括で求める</span></h3>



<p class="wp-block-paragraph">B2:D4の数値部分に対して、列ごとの合計を求めます。出力先のセル（たとえばB6）に以下の数式を入力して、Enterを押します。</p>



<pre class="wp-block-code"><code>=BYCOL(B2:D4, LAMBDA(col, SUM(col)))</code></pre>



<p class="wp-block-paragraph">結果が横1行に展開されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>6</td><td>240</td><td>280</td><td>260</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">4月の合計は240、5月は280、6月は260です。3列分の合計が一度に求まりましたね。</p>



<h3 class="wp-block-heading"><span id="toc7">各列の平均を一括で求める</span></h3>



<p class="wp-block-paragraph">SUM関数の部分をAVERAGE関数に変えるだけで、列ごとの平均が出せます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>7</td><td>80</td><td>93.33</td><td>86.67</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA関数の処理部分を入れ替えるだけで、さまざまな集計に対応できるのがBYCOL関数の強みです。</p>



<h3 class="wp-block-heading"><span id="toc8">各列の最大値・最小値を求める</span></h3>



<p class="wp-block-paragraph">MAX関数やMIN関数も同じように使えます。</p>



<pre class="wp-block-code"><code>=BYCOL(B2:D4, LAMBDA(col, MAX(col)))</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>8</td><td>100</td><td>120</td><td>110</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">各月の最大売上が横1行に並びます。どの月が最も好調だったか、一目でわかりますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc10">パターン1: 列ごとにデータの件数をカウントする</span></h3>



<p class="wp-block-paragraph">各列に何件のデータが入っているかをカウントする例です。</p>



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



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-counta-function/">COUNTA関数</a>を使えば、空白以外のセルの数を列ごとにカウントできます。入力漏れのチェックに活躍するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: 列ごとに条件付きカウントする</span></h3>



<p class="wp-block-paragraph">条件に合うデータだけを列ごとにカウントすることもできます。</p>



<pre class="wp-block-code"><code>=BYCOL(B2:D10, LAMBDA(col, COUNTIF(col, &quot;&gt;&quot;&amp;100)))</code></pre>



<p class="wp-block-paragraph">各列で「100を超えるデータが何件あるか」を一括で求めています。<a href="https://mashukabu.com/spreadsheet-countif-function/">COUNTIF関数</a>を組み合わせれば、閾値を超えた件数の一覧が簡単に作れますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 列ごとにユニークな値の数を数える</span></h3>



<p class="wp-block-paragraph">各列に重複なしで何種類の値があるかを数える例です。</p>



<pre class="wp-block-code"><code>=BYCOL(B2:D10, LAMBDA(col, COUNTA(UNIQUE(col))))</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-unique-function/">UNIQUE関数</a>で重複を除外してからCOUNTA関数でカウントしています。カテゴリの多様性を列ごとにチェックしたいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン4: 列ごとの標準偏差を求める</span></h3>



<p class="wp-block-paragraph">統計的な分析にも使えます。</p>



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



<p class="wp-block-paragraph">各列のばらつき度合いを一括で算出できます。月ごとの売上のばらつきを比較したい場面で活躍しますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: 文字列の列ごとの結合</span></h3>



<p class="wp-block-paragraph">数値だけでなく、文字列の処理にも使えます。</p>



<pre class="wp-block-code"><code>=BYCOL(A2:A10, LAMBDA(col, TEXTJOIN(&quot;, &quot;, TRUE, col)))</code></pre>



<p class="wp-block-paragraph">各列のデータをカンマ区切りで1つのセルにまとめます。<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>と組み合わせれば、リスト化がワンステップで完了です。</p>



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



<p class="wp-block-paragraph">BYCOL関数とペアで覚えたいのが、BYROW関数です。名前のとおり、処理の方向が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>BYCOL関数</th><th>BYROW関数</th></tr></thead><tbody><tr><td>処理単位</td><td>列ごと</td><td>行ごと</td></tr><tr><td>結果の方向</td><td>横1行に展開</td><td>縦1列に展開</td></tr><tr><td>典型的な用途</td><td>列ごとの合計・平均</td><td>行ごとの合計・平均</td></tr><tr><td>構文</td><td><code>=BYCOL(配列, LAMBDA(col, ...))</code></td><td><code>=BYROW(配列, LAMBDA(row, ...))</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>使い分けの目安はこうです。</strong></p>



<ul class="wp-block-list"><li><strong>月別・カテゴリ別の集計（列方向）</strong> → BYCOL関数</li><li><strong>個人別・行方向の集計（行方向）</strong> → BYROW関数</li></ul>



<h3 class="wp-block-heading"><span id="toc16">BYCOL関数が向いている場面</span></h3>



<p class="wp-block-paragraph">BYCOL関数は「列ごとの集計行を作りたい」ときに最適です。</p>



<pre class="wp-block-code"><code>=BYCOL(B2:D4, LAMBDA(col, SUM(col)))</code></pre>



<p class="wp-block-paragraph">月別の売上表の最終行に「合計」行を作る場面を思い浮かべてください。各列の合計を1つの数式で出せるので、列が追加されても数式の修正が不要です。</p>



<h3 class="wp-block-heading"><span id="toc17">BYROW関数が向いている場面</span></h3>



<p class="wp-block-paragraph">BYROW関数は「行ごとの集計列を作りたい」ときに使います。</p>



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



<p class="wp-block-paragraph">担当者ごと・商品ごとに行方向の合計を出したい場面で活躍します。結果は縦1列に展開されますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>BYCOL関数とBYROW関数を同じ表に使えば、行方向と列方向の集計を両方自動化できます。「列の合計はBYCOL、行の合計はBYROW」と覚えておくと迷いません。</p></blockquote>



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



<p class="wp-block-paragraph">BYCOL関数と混同しやすいのがMAP関数です。どちらもLAMBDA関数と組み合わせて使いますが、処理の粒度が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>BYCOL関数</th><th>MAP関数</th></tr></thead><tbody><tr><td>処理単位</td><td>列（複数セルのまとまり）</td><td>セル（1つずつ）</td></tr><tr><td>結果の形</td><td>横1行</td><td>元の配列と同じ形</td></tr><tr><td>向いている処理</td><td>集計（SUM, AVERAGE, MAX等）</td><td>変換・加工（四捨五入、条件分岐等）</td></tr><tr><td>引数のLAMBDA</td><td>列全体を受け取る</td><td>各セルの値を受け取る</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>使い分けの目安はこうです。</strong></p>



<ul class="wp-block-list"><li><strong>列ごとにまとめて集計したい</strong> → BYCOL関数</li><li><strong>各セルを個別に変換・加工したい</strong> → MAP関数</li></ul>



<h3 class="wp-block-heading"><span id="toc19">MAP関数の使用例</span></h3>



<p class="wp-block-paragraph">MAP関数は各セルに対して処理を適用します。</p>



<pre class="wp-block-code"><code>=MAP(B2:D4, LAMBDA(val, IF(val &gt;= 100, &quot;達成&quot;, &quot;未達&quot;)))</code></pre>



<p class="wp-block-paragraph">この例では、各セルの値が100以上かどうかを判定しています。結果は元の3行x3列と同じ形で返ります。</p>



<p class="wp-block-paragraph">BYCOL関数で同じことをしようとすると「列全体を受け取る」ため、セル単位の変換には向きません。セルごとの加工はMAP関数、列ごとの集計はBYCOL関数と使い分けてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc20">LAMBDA系関数の全体像</span></h2>



<p class="wp-block-paragraph">スプレッドシートには、LAMBDA関数と組み合わせて使う関数が複数あります。全体像を把握しておくと、どの場面でどの関数を使うか判断しやすくなりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>処理単位</th><th>結果の形</th><th>主な用途</th></tr></thead><tbody><tr><td>BYCOL</td><td>列ごと</td><td>横1行</td><td>列ごとの集計</td></tr><tr><td>BYROW</td><td>行ごと</td><td>縦1列</td><td>行ごとの集計</td></tr><tr><td>MAP</td><td>セルごと</td><td>元と同じ形</td><td>セルごとの変換・加工</td></tr><tr><td>REDUCE</td><td>配列全体</td><td>1つの値</td><td>全体を1つに集約</td></tr><tr><td>SCAN</td><td>累積</td><td>縦1列</td><td>累積計算の中間結果</td></tr><tr><td>MAKEARRAY</td><td>行×列</td><td>新しい配列</td><td>計算で配列を生成</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">BYCOL関数は「列ごとに集計して横1行にまとめる」という、かなり限定的な用途の関数です。そのぶん使い方が明快で、迷わずに使えるのがメリットですね。</p>



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



<p class="wp-block-paragraph">BYCOL関数はLAMBDA関数と組み合わせるため、構文のミスが起こりやすいです。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#NAME?</code></td><td>関数名のスペルミス</td><td>「BYCOL」のスペルを確認してください</td></tr><tr><td><code>#NAME?</code></td><td>Excelで使用しようとした</td><td>BYCOL関数はGoogleスプレッドシート専用です</td></tr><tr><td><code>#NAME?</code></td><td>LAMBDA関数の仮引数名が不正</td><td>仮引数名にセル参照（A1等）やスペースは使えません</td></tr><tr><td><code>#VALUE!</code></td><td>LAMBDAが1つの値を返さない</td><td>BYCOL関数のLAMBDAは各列に対して1つの値を返す必要があります。配列を返す処理は使えません</td></tr><tr><td><code>#REF!</code></td><td>出力先のセルにデータがある</td><td>結果が横に展開されるため、出力先の右側のセルを空にしてください</td></tr><tr><td><code>#ERROR!</code></td><td>LAMBDAの引数の数が合わない</td><td>LAMBDAの仮引数は1つ（列を受け取る引数）にしてください</td></tr><tr><td>結果が0になる</td><td>文字列の列にSUM関数を使った</td><td>文字列を含む列には、COUNTA関数やTEXTJOIN関数を使ってください</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に多いのが「LAMBDAが1つの値を返さない」エラーです。BYCOL関数は各列に対して1つの値（スカラー値）を返すことを期待しています。SORT関数やFILTER関数のように配列を返す処理はNGです。LAMBDA内に書くと<code>#VALUE!</code>エラーになるので注意してくださいね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LAMBDA関数の仮引数名で迷ったら、<code>col</code>（column の略）を使うのがおすすめです。BYROW関数では<code>row</code>、MAP関数では<code>val</code>や<code>v</code>を使うと、どの関数を使っているか一目でわかります。</p></blockquote>



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



<p class="wp-block-paragraph">BYCOL関数は、配列の各列にLAMBDA関数で処理を適用し、結果を横1行に返す関数です。列ごとの集計をまとめて自動化できるので、列数が多い表の管理がグッと楽になります。</p>



<p class="wp-block-paragraph">この記事のポイントをおさらいしておきましょう。</p>



<ul class="wp-block-list"><li>BYCOL関数は<code>=BYCOL(配列, LAMBDA(col, 処理))</code>で、各列に同じ処理を一括適用する</li><li>SUM、AVERAGE、MAX、COUNTAなど、1つの値を返す関数ならなんでもLAMBDAに組み込める</li><li>BYROW関数は行方向の集計、MAP関数はセルごとの変換に使い分ける</li><li>LAMBDAは各列に対して1つの値を返す必要がある（配列を返すとエラー）</li><li>Googleスプレッドシート独自の関数で、Excelでは使えない</li></ul>



<p class="wp-block-paragraph">まずは<code>=BYCOL(B2:D4, LAMBDA(col, SUM(col)))</code>のシンプルな列合計から試してみてください。一度使い方を覚えれば、AVERAGE、MAX、COUNTAなど、処理部分を入れ替えるだけでさまざまな集計に応用できますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc23">この記事で紹介した関数・関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-byrow-function/">スプレッドシートのBYROW関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">スプレッドシートのARRAYFORMULA関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-unique-function/">スプレッドシートのUNIQUE関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-flatten-function/">スプレッドシートのFLATTEN関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-countif-function/">スプレッドシートのCOUNTIF関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-counta-function/">スプレッドシートのCOUNTA関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-textjoin-function/">スプレッドシートのTEXTJOIN関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-bycol-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのBYROW関数の使い方｜各行にLAMBDA適用</title>
		<link>https://mashukabu.com/spreadsheet-byrow-function/</link>
					<comments>https://mashukabu.com/spreadsheet-byrow-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:37:49 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[BYCOL関数]]></category>
		<category><![CDATA[BYROW関数]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[MAP関数]]></category>
		<category><![CDATA[行ごとの集計]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4903</guid>

					<description><![CDATA[スプレッドシートのBYROW関数で各行にLAMBDA処理を一括適用する方法を解説。BYCOL関数・MAP関数との違いや、行ごとの合計・平均・最大値を一列で取得する実務パターンまで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「行ごとの合計」や「行ごとの平均」を出したいときに困りますよね。行の数だけSUM関数やAVERAGE関数を並べるのは手間ですし、行が増えるたびに数式をコピーするのも面倒です。</p>



<p class="wp-block-paragraph">BYROW関数を使えば、すべての行に同じ計算を一括で適用できます。LAMBDA関数と組み合わせて「各行にこの処理をして」と指定するだけです。</p>



<p class="wp-block-paragraph">この記事では、BYROW関数の基本から、BYCOL関数やMAP関数との違いまでわかりやすく解説します。</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">BYROW関数とは？</a><ol><li><a href="#toc2" tabindex="0">BYROW関数の基本構文</a></li><li><a href="#toc3" tabindex="0">LAMBDA関数のおさらい</a></li></ol></li><li><a href="#toc4" tabindex="0">BYROW関数の基本的な使い方</a><ol><li><a href="#toc5" tabindex="0">サンプルデータ</a></li><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">BYROW関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: 行ごとにデータの件数をカウントする</a></li><li><a href="#toc11" tabindex="0">パターン2: 行ごとに条件付きカウントする</a></li><li><a href="#toc12" tabindex="0">パターン3: 行ごとにユニークな値の数を数える</a></li><li><a href="#toc13" tabindex="0">パターン4: 行ごとの標準偏差を求める</a></li><li><a href="#toc14" tabindex="0">パターン5: 文字列の行ごとの結合</a></li></ol></li><li><a href="#toc15" tabindex="0">BYCOL関数との違い・使い分け</a><ol><li><a href="#toc16" tabindex="0">BYROW関数が向いている場面</a></li><li><a href="#toc17" tabindex="0">BYCOL関数が向いている場面</a></li></ol></li><li><a href="#toc18" tabindex="0">MAP関数との違い・使い分け</a><ol><li><a href="#toc19" tabindex="0">MAP関数の使用例</a></li></ol></li><li><a href="#toc20" tabindex="0">LAMBDA系関数の全体像</a></li><li><a href="#toc21" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc22" tabindex="0">まとめ</a><ol><li><a href="#toc23" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">BYROW関数（読み方: バイロウ関数）は、配列やセル範囲の<strong>各行に対してLAMBDA関数を適用する</strong>関数です。結果は縦1列に返ります。「by row（行ごとに）」が名前の由来で、行単位で処理を繰り返すイメージですね。</p>



<p class="wp-block-paragraph">たとえば、4行x3列の売上データにBYROW関数でSUM処理を適用すると、4行それぞれの合計が縦1列に並びます。行を追加しても数式を変更する必要がなく、自動で集計範囲が広がりますよ。</p>



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



<ul class="wp-block-list"><li>各行に同じ計算（合計・平均・最大値など）を一括で適用する</li><li>LAMBDA関数で処理内容を自由にカスタマイズできる</li><li>結果を縦1列で返すため、集計列として使いやすい</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>BYROW関数はGoogleスプレッドシート独自の関数です。Excelには同じ名前の関数がないため、Excelで同様の処理をしたい場合は、各行にSUM関数やAVERAGE関数を個別に入力してください。</p></blockquote>



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



<pre class="wp-block-code"><code>=BYROW(配列, LAMBDA(行, 処理))</code></pre>



<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>配列</td><td>必須</td><td>処理対象のセル範囲または配列</td></tr><tr><td>LAMBDA(行, 処理)</td><td>必須</td><td>各行に適用する関数。「行」は各行を受け取る仮引数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA関数の仮引数（上の例では「行」）には好きな名前を付けられます。<code>row</code>や<code>r</code>でもOKです。この仮引数に各行のデータが1行ずつ渡されて、処理が実行されます。</p>



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



<p class="wp-block-paragraph">BYROW関数を使うには、LAMBDA関数の基本を知っておく必要があります。LAMBDA関数の詳しい仕組みは<a href="https://mashukabu.com/spreadsheet-bycol-function/">BYCOL関数の記事</a>で解説していますので、ここではポイントだけ押さえましょう。</p>



<p class="wp-block-paragraph">LAMBDA関数は「自分だけの関数を作れる」関数です。引数と処理内容を自分で定義できます。</p>



<pre class="wp-block-code"><code>=LAMBDA(引数, 処理)(値)</code></pre>



<p class="wp-block-paragraph">たとえば <code>=LAMBDA(x, x<em>2)(5)</code> と書くと、xに5が入って「5</em>2=10」が返ります。BYROW関数の中では、このLAMBDA関数に各行のデータが自動的に渡される仕組みです。</p>



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



<p class="wp-block-paragraph">ここでは、担当者別の売上データをBYROW関数で行ごとに集計する例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc5">サンプルデータ</span></h3>



<p class="wp-block-paragraph">A1:D4に以下のデータが入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>&nbsp;</td><td>4月</td><td>5月</td><td>6月</td></tr><tr><td>2</td><td>東京</td><td>100</td><td>120</td><td>110</td></tr><tr><td>3</td><td>大阪</td><td>80</td><td>90</td><td>85</td></tr><tr><td>4</td><td>名古屋</td><td>60</td><td>70</td><td>65</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc6">各行の合計を一括で求める</span></h3>



<p class="wp-block-paragraph">B2:D4の数値部分に対して、行ごとの合計を求めます。出力先のセル（たとえばE2）に以下の数式を入力して、Enterを押します。</p>



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



<p class="wp-block-paragraph">結果が縦1列に展開されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>E</th></tr></thead><tbody><tr><td>2</td><td>330</td></tr><tr><td>3</td><td>255</td></tr><tr><td>4</td><td>195</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">東京の合計は330、大阪は255、名古屋は195です。3行分の合計が一度に求まりましたね。</p>



<h3 class="wp-block-heading"><span id="toc7">各行の平均を一括で求める</span></h3>



<p class="wp-block-paragraph">SUM関数の部分をAVERAGE関数に変えるだけで、行ごとの平均が出せます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>E</th></tr></thead><tbody><tr><td>2</td><td>110</td></tr><tr><td>3</td><td>85</td></tr><tr><td>4</td><td>65</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA関数の処理部分を入れ替えるだけで、さまざまな集計に対応できるのがBYROW関数の強みです。</p>



<h3 class="wp-block-heading"><span id="toc8">各行の最大値・最小値を求める</span></h3>



<p class="wp-block-paragraph">MAX関数やMIN関数も同じように使えます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>E</th></tr></thead><tbody><tr><td>2</td><td>120</td></tr><tr><td>3</td><td>90</td></tr><tr><td>4</td><td>70</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">各担当者の最大売上が縦1列に並びます。どの月が最も好調だったか、担当者ごとに一目でわかりますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc10">パターン1: 行ごとにデータの件数をカウントする</span></h3>



<p class="wp-block-paragraph">各行に何件のデータが入っているかをカウントする例です。</p>



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



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-counta-function/">COUNTA関数</a>を使えば、空白以外のセルの数を行ごとにカウントできます。入力漏れのチェックに活躍するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: 行ごとに条件付きカウントする</span></h3>



<p class="wp-block-paragraph">条件に合うデータだけを行ごとにカウントすることもできます。</p>



<pre class="wp-block-code"><code>=BYROW(B2:F10, LAMBDA(row, COUNTIF(row, &quot;&gt;&quot;&amp;100)))</code></pre>



<p class="wp-block-paragraph">各行で「100を超えるデータが何件あるか」を一括で求めています。<a href="https://mashukabu.com/spreadsheet-countif-function/">COUNTIF関数</a>を組み合わせれば、閾値を超えた月の数が担当者ごとに簡単にわかりますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 行ごとにユニークな値の数を数える</span></h3>



<p class="wp-block-paragraph">各行に重複なしで何種類の値があるかを数える例です。</p>



<pre class="wp-block-code"><code>=BYROW(B2:F10, LAMBDA(row, COUNTA(UNIQUE(TRANSPOSE(row)))))</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-unique-function/">UNIQUE関数</a>は縦方向に重複を除外するため、行データをTRANSPOSE関数で縦に変換してから処理しています。カテゴリの多様性を行ごとにチェックしたいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン4: 行ごとの標準偏差を求める</span></h3>



<p class="wp-block-paragraph">統計的な分析にも使えます。</p>



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



<p class="wp-block-paragraph">各行のばらつき度合いを一括で算出できます。担当者ごとの売上のばらつきを比較したい場面で活躍しますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: 文字列の行ごとの結合</span></h3>



<p class="wp-block-paragraph">数値だけでなく、文字列の処理にも使えます。</p>



<pre class="wp-block-code"><code>=BYROW(B2:D10, LAMBDA(row, TEXTJOIN(&quot;, &quot;, TRUE, row)))</code></pre>



<p class="wp-block-paragraph">各行のデータをカンマ区切りで1つのセルにまとめます。<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>と組み合わせれば、リスト化がワンステップで完了です。</p>



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



<p class="wp-block-paragraph">BYROW関数とペアで覚えたいのが、<a href="https://mashukabu.com/spreadsheet-bycol-function/">BYCOL関数</a>です。名前のとおり、処理の方向が異なります。</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列に展開</td><td>横1行に展開</td></tr><tr><td>典型的な用途</td><td>行ごとの合計・平均</td><td>列ごとの合計・平均</td></tr><tr><td>構文</td><td><code>=BYROW(配列, LAMBDA(row, ...))</code></td><td><code>=BYCOL(配列, LAMBDA(col, ...))</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>使い分けの目安はこうです。</strong></p>



<ul class="wp-block-list"><li><strong>担当者別・行方向の集計（行方向）</strong> → BYROW関数</li><li><strong>月別・カテゴリ別の集計（列方向）</strong> → BYCOL関数</li></ul>



<h3 class="wp-block-heading"><span id="toc16">BYROW関数が向いている場面</span></h3>



<p class="wp-block-paragraph">BYROW関数は「行ごとの集計列を作りたい」ときに最適です。</p>



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



<p class="wp-block-paragraph">担当者ごとの売上表の右端に「合計」列を作る場面を思い浮かべてください。各行の合計を1つの数式で出せるので、行が追加されても数式の修正が不要です。</p>



<h3 class="wp-block-heading"><span id="toc17">BYCOL関数が向いている場面</span></h3>



<p class="wp-block-paragraph">BYCOL関数は「列ごとの集計行を作りたい」ときに使います。</p>



<pre class="wp-block-code"><code>=BYCOL(B2:D4, LAMBDA(col, SUM(col)))</code></pre>



<p class="wp-block-paragraph">月別の売上表の最終行に「合計」行を作る場面で活躍します。結果は横1行に展開されますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>BYROW関数とBYCOL関数を同じ表に使えば、行方向と列方向の集計を両方自動化できます。「行の合計はBYROW、列の合計はBYCOL」と覚えておくと迷いません。</p></blockquote>



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



<p class="wp-block-paragraph">BYROW関数と混同しやすいのがMAP関数です。どちらもLAMBDA関数と組み合わせて使いますが、処理の粒度が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>BYROW関数</th><th>MAP関数</th></tr></thead><tbody><tr><td>処理単位</td><td>行（複数セルのまとまり）</td><td>セル（1つずつ）</td></tr><tr><td>結果の形</td><td>縦1列</td><td>元の配列と同じ形</td></tr><tr><td>向いている処理</td><td>集計（SUM, AVERAGE, MAX等）</td><td>変換・加工（四捨五入、条件分岐等）</td></tr><tr><td>引数のLAMBDA</td><td>行全体を受け取る</td><td>各セルの値を受け取る</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>使い分けの目安はこうです。</strong></p>



<ul class="wp-block-list"><li><strong>行ごとにまとめて集計したい</strong> → BYROW関数</li><li><strong>各セルを個別に変換・加工したい</strong> → MAP関数</li></ul>



<h3 class="wp-block-heading"><span id="toc19">MAP関数の使用例</span></h3>



<p class="wp-block-paragraph">MAP関数は各セルに対して処理を適用します。</p>



<pre class="wp-block-code"><code>=MAP(B2:D4, LAMBDA(val, IF(val &gt;= 100, &quot;達成&quot;, &quot;未達&quot;)))</code></pre>



<p class="wp-block-paragraph">この例では、各セルの値が100以上かどうかを判定しています。結果は元の3行x3列と同じ形で返ります。</p>



<p class="wp-block-paragraph">BYROW関数で同じことをしようとすると「行全体を受け取る」ため、セル単位の変換には向きません。セルごとの加工はMAP関数、行ごとの集計はBYROW関数と使い分けてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc20">LAMBDA系関数の全体像</span></h2>



<p class="wp-block-paragraph">スプレッドシートには、LAMBDA関数と組み合わせて使う関数が複数あります。全体像を把握しておくと、どの場面でどの関数を使うか判断しやすくなりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>処理単位</th><th>結果の形</th><th>主な用途</th></tr></thead><tbody><tr><td>BYROW</td><td>行ごと</td><td>縦1列</td><td>行ごとの集計</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-bycol-function/">BYCOL</a></td><td>列ごと</td><td>横1行</td><td>列ごとの集計</td></tr><tr><td>MAP</td><td>セルごと</td><td>元と同じ形</td><td>セルごとの変換・加工</td></tr><tr><td>REDUCE</td><td>配列全体</td><td>1つの値</td><td>全体を1つに集約</td></tr><tr><td>SCAN</td><td>累積</td><td>縦1列</td><td>累積計算の中間結果</td></tr><tr><td>MAKEARRAY</td><td>行x列</td><td>新しい配列</td><td>計算で配列を生成</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">BYROW関数は「行ごとに集計して縦1列にまとめる」という、かなり限定的な用途の関数です。そのぶん使い方が明快で、迷わずに使えるのがメリットですね。</p>



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



<p class="wp-block-paragraph">BYROW関数はLAMBDA関数と組み合わせるため、構文のミスが起こりやすいです。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#NAME?</code></td><td>関数名のスペルミス</td><td>「BYROW」のスペルを確認してください</td></tr><tr><td><code>#NAME?</code></td><td>Excelで使用しようとした</td><td>BYROW関数はGoogleスプレッドシート専用です</td></tr><tr><td><code>#NAME?</code></td><td>LAMBDA関数の仮引数名が不正</td><td>仮引数名にセル参照（A1等）やスペースは使えません</td></tr><tr><td><code>#VALUE!</code></td><td>LAMBDAが1つの値を返さない</td><td>BYROW関数のLAMBDAは各行に対して1つの値を返す必要があります。配列を返す処理は使えません</td></tr><tr><td><code>#REF!</code></td><td>出力先のセルにデータがある</td><td>結果が縦に展開されるため、出力先の下側のセルを空にしてください</td></tr><tr><td><code>#ERROR!</code></td><td>LAMBDAの引数の数が合わない</td><td>LAMBDAの仮引数は1つ（行を受け取る引数）にしてください</td></tr><tr><td>結果が0になる</td><td>文字列の行にSUM関数を使った</td><td>文字列を含む行には、COUNTA関数やTEXTJOIN関数を使ってください</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に多いのが「LAMBDAが1つの値を返さない」エラーです。BYROW関数は各行に対して1つの値（スカラー値）を返すことを期待しています。SORT関数やFILTER関数のように配列を返す処理はNGです。LAMBDAの中に書くと<code>#VALUE!</code>エラーになるので注意してくださいね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LAMBDA関数の仮引数名で迷ったら、<code>row</code>を使うのがおすすめです。BYCOL関数では<code>col</code>、MAP関数では<code>val</code>や<code>v</code>を使うと、どの関数を使っているか一目でわかります。</p></blockquote>



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



<p class="wp-block-paragraph">BYROW関数は、配列の各行にLAMBDA関数で処理を適用し、結果を縦1列に返す関数です。行ごとの集計をまとめて自動化できるので、行数が多い表の管理がグッと楽になります。</p>



<p class="wp-block-paragraph">この記事のポイントをおさらいしておきましょう。</p>



<ul class="wp-block-list"><li>BYROW関数は<code>=BYROW(配列, LAMBDA(row, 処理))</code>で、各行に同じ処理を一括適用する</li><li>SUM、AVERAGE、MAX、COUNTAなど、1つの値を返す関数ならなんでもLAMBDAに組み込める</li><li>BYCOL関数は列方向の集計、MAP関数はセルごとの変換に使い分ける</li><li>LAMBDAは各行に対して1つの値を返す必要がある（配列を返すとエラー）</li><li>Googleスプレッドシート独自の関数で、Excelでは使えない</li></ul>



<p class="wp-block-paragraph">まずは<code>=BYROW(B2:D4, LAMBDA(row, SUM(row)))</code>のシンプルな行合計から試してみてください。一度使い方を覚えれば、AVERAGE、MAX、COUNTAなど、処理部分を入れ替えるだけでさまざまな集計に応用できますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc23">この記事で紹介した関数・関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-bycol-function/">スプレッドシートのBYCOL関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">スプレッドシートのARRAYFORMULA関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-unique-function/">スプレッドシートのUNIQUE関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-countif-function/">スプレッドシートのCOUNTIF関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-counta-function/">スプレッドシートのCOUNTA関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-textjoin-function/">スプレッドシートのTEXTJOIN関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-byrow-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのMAP関数の使い方｜各値にLAMBDA適用</title>
		<link>https://mashukabu.com/spreadsheet-map-function/</link>
					<comments>https://mashukabu.com/spreadsheet-map-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:28:38 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ARRAYFORMULA関数]]></category>
		<category><![CDATA[BYCOL関数]]></category>
		<category><![CDATA[BYROW関数]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[MAP関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4719</guid>

					<description><![CDATA[スプレッドシートのMAP関数で各セルにLAMBDA処理を一括適用する方法を解説。ARRAYFORMULA関数との違いや、BYCOL・BYROW関数との使い分け、複数配列の同時処理パターンまでわかりやすく紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで「全セルに同じ加工をしたい」場面、ありませんか？ 数値の四捨五入、条件に応じたラベル付け、文字列の変換など、1つずつ数式をコピーしていくのは手間がかかります。</p>



<p class="wp-block-paragraph">MAP関数を使えば、配列のすべてのセルにLAMBDA関数で処理を一括適用できます。しかも複数の配列を同時に処理できるのが、MAP関数ならではの強みです。</p>



<p class="wp-block-paragraph">この記事では、MAP関数の基本から、ARRAYFORMULA関数やBYCOL・BYROW関数との違いまでわかりやすく解説します。</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">MAP関数の基本構文</a></li><li><a href="#toc3" tabindex="0">LAMBDA関数のおさらい</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">条件分岐を一括適用する</a></li><li><a href="#toc8" tabindex="0">複数の配列を同時に処理する</a></li></ol></li><li><a href="#toc9" tabindex="0">MAP関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: 空白セルにデフォルト値を埋める</a></li><li><a href="#toc11" tabindex="0">パターン2: 数値にカンマ区切りの書式を適用する</a></li><li><a href="#toc12" tabindex="0">パターン3: 税込価格を一括計算する</a></li><li><a href="#toc13" tabindex="0">パターン4: 2つの列を結合してフルネームを作る</a></li><li><a href="#toc14" tabindex="0">パターン5: エラー値を安全に処理する</a></li><li><a href="#toc15" tabindex="0">パターン6: 日付・テキストの一括整形</a></li><li><a href="#toc16" tabindex="0">パターン7: MAP関数とBYCOL・BYROWの二段階活用</a></li></ol></li><li><a href="#toc17" tabindex="0">ARRAYFORMULA関数との違い・使い分け</a><ol><li><a href="#toc18" tabindex="0">ARRAYFORMULA関数で書ける例</a></li><li><a href="#toc19" tabindex="0">MAP関数でないとできない例</a></li></ol></li><li><a href="#toc20" tabindex="0">BYCOL・BYROW関数との違い・使い分け</a></li><li><a href="#toc21" tabindex="0">LAMBDA系関数の全体像</a></li><li><a href="#toc22" tabindex="0">MAP関数のネストと多段変換</a><ol><li><a href="#toc23" tabindex="0">MAP関数を入れ子にする</a></li><li><a href="#toc24" tabindex="0">複数配列を使った条件付きマスキング</a></li></ol></li><li><a href="#toc25" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc26" tabindex="0">まとめ</a><ol><li><a href="#toc27" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">MAP関数（読み方: マップ関数）は、配列やセル範囲の<strong>各セルに対してLAMBDA関数を適用する</strong>関数です。結果は元の配列と同じサイズで返ります。「map（対応づける）」が名前の由来で、各値を別の値に変換するイメージですね。</p>



<p class="wp-block-paragraph">たとえば、3行x3列の売上データにMAP関数でROUND処理を適用すると、9つのセルすべてが四捨五入された値に置き換わります。元の表と同じ形のまま一括で変換できるのがポイントです。</p>



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



<ul class="wp-block-list"><li>各セルに同じ処理（四捨五入、条件分岐、文字変換など）を一括適用する</li><li>LAMBDA関数で処理内容を自由にカスタマイズできる</li><li>複数の配列を同時に渡して、対応するセル同士を処理できる</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>MAP関数はGoogleスプレッドシート独自の関数です。Excelには同じ名前の関数がないため、Excelで同様の処理をしたい場合は、ARRAYFORMULA関数や配列数式で代用してください。</p></blockquote>



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



<pre class="wp-block-code"><code>=MAP(配列, LAMBDA(値, 処理))</code></pre>



<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>配列</td><td>必須</td><td>処理対象のセル範囲または配列（複数指定可）</td></tr><tr><td>LAMBDA(値, 処理)</td><td>必須</td><td>各セルに適用する関数。「値」は各セルを受け取る仮引数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA関数の仮引数（上の例では「値」）には好きな名前を付けられます。<code>val</code>や<code>v</code>でもOKです。この仮引数に各セルのデータが1つずつ渡されて、処理が実行されます。</p>



<p class="wp-block-paragraph"><strong>複数配列を渡す場合</strong>の構文はこうなります。</p>



<pre class="wp-block-code"><code>=MAP(配列1, 配列2, LAMBDA(値1, 値2, 処理))</code></pre>



<p class="wp-block-paragraph">配列1と配列2の同じ位置にあるセルが、それぞれ値1・値2としてLAMBDA関数に渡されます。配列は3つ以上でも指定可能です。ただし、すべての配列は同じサイズ（行数×列数）にしてください。</p>



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



<p class="wp-block-paragraph">MAP関数を理解するには、LAMBDA関数の基本を知っておく必要があります。詳しくは<a href="https://mashukabu.com/spreadsheet-bycol-function/">BYCOL関数の記事</a>で解説していますが、ここでもかんたんにおさらいしておきますね。</p>



<p class="wp-block-paragraph">LAMBDA関数は「自分だけの関数を作れる」関数です。引数と処理内容を自分で定義できます。</p>



<pre class="wp-block-code"><code>=LAMBDA(引数, 処理)(値)</code></pre>



<p class="wp-block-paragraph">たとえば <code>=LAMBDA(x, x<em>2)(5)</code> と書くと、xに5が入って「5</em>2=10」が返ります。MAP関数の中では、このLAMBDA関数に各セルの値が自動的に渡される仕組みです。</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">A1:D4に以下のデータが入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>&nbsp;</td><td>4月</td><td>5月</td><td>6月</td></tr><tr><td>2</td><td>東京</td><td>98.7</td><td>120.3</td><td>110.5</td></tr><tr><td>3</td><td>大阪</td><td>82.4</td><td>91.8</td><td>85.2</td></tr><tr><td>4</td><td>名古屋</td><td>63.1</td><td>74.6</td><td>68.9</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc6">各セルを四捨五入する</span></h3>



<p class="wp-block-paragraph">B2:D4の数値を一括で四捨五入します。出力先のセル（たとえばF2）に以下の数式を入力して、Enterを押します。</p>



<pre class="wp-block-code"><code>=MAP(B2:D4, LAMBDA(val, ROUND(val, 0)))</code></pre>



<p class="wp-block-paragraph">結果が元の3行x3列と同じ形で返ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th><th>G</th><th>H</th></tr></thead><tbody><tr><td>2</td><td>99</td><td>120</td><td>111</td></tr><tr><td>3</td><td>82</td><td>92</td><td>85</td></tr><tr><td>4</td><td>63</td><td>75</td><td>69</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">すべてのセルがROUND関数で四捨五入されました。9つのセルに個別にROUND関数を入力する手間が省けますね。</p>



<h3 class="wp-block-heading"><span id="toc7">条件分岐を一括適用する</span></h3>



<p class="wp-block-paragraph">各セルの値を条件で判定し、ラベルを付ける例です。</p>



<pre class="wp-block-code"><code>=MAP(B2:D4, LAMBDA(val, IF(val &gt;= 100, &quot;達成&quot;, &quot;未達&quot;)))</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th><th>G</th><th>H</th></tr></thead><tbody><tr><td>2</td><td>未達</td><td>達成</td><td>達成</td></tr><tr><td>3</td><td>未達</td><td>未達</td><td>未達</td></tr><tr><td>4</td><td>未達</td><td>未達</td><td>未達</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-if-function/">IF関数</a>と組み合わせれば、全セルに条件分岐を一括適用できます。目標達成の判定表が一発で完成です。</p>



<h3 class="wp-block-heading"><span id="toc8">複数の配列を同時に処理する</span></h3>



<p class="wp-block-paragraph">MAP関数ならではの機能が、複数の配列を同時に処理できることです。</p>



<p class="wp-block-paragraph">たとえば、売上データ（B2:D4）と目標データ（F2:H4）の2つの表がある場合を考えてみましょう。</p>



<pre class="wp-block-code"><code>=MAP(B2:D4, F2:H4, LAMBDA(actual, target, actual - target))</code></pre>



<p class="wp-block-paragraph">各セルの「売上 &#8211; 目標」の差額が一括で計算されます。2つの表の同じ位置にあるセルが、LAMBDAの引数に1つずつ渡される仕組みです。</p>



<p class="wp-block-paragraph">この使い方はBYCOL関数やBYROW関数にはありません。「複数の表を突き合わせてセルごとに処理したい」場面では、MAP関数の出番ですよ。</p>



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



<h3 class="wp-block-heading"><span id="toc10">パターン1: 空白セルにデフォルト値を埋める</span></h3>



<p class="wp-block-paragraph">データに空白セルが混じっているとき、一括で「0」や「-」に置き換えます。</p>



<pre class="wp-block-code"><code>=MAP(B2:D10, LAMBDA(val, IF(val=&quot;&quot;, 0, val)))</code></pre>



<p class="wp-block-paragraph">空白だったセルが0に置き換わり、それ以外はそのまま残ります。集計前のデータクリーニングに便利なパターンです。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: 数値にカンマ区切りの書式を適用する</span></h3>



<p class="wp-block-paragraph">大きな数値をカンマ区切りの文字列に変換します。</p>



<pre class="wp-block-code"><code>=MAP(B2:D10, LAMBDA(val, TEXT(val, &quot;#,##0&quot;)))</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-text-function/">TEXT関数</a>と組み合わせれば、表示形式の一括変換がワンステップで完了します。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 税込価格を一括計算する</span></h3>



<p class="wp-block-paragraph">税抜き価格の表から、税込価格の表を一発で作ります。</p>



<pre class="wp-block-code"><code>=MAP(B2:D10, LAMBDA(val, ROUND(val * 1.1, 0)))</code></pre>



<p class="wp-block-paragraph">消費税10%を掛けてROUND関数で整数に丸めています。価格表の更新に使えるパターンです。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン4: 2つの列を結合してフルネームを作る</span></h3>



<p class="wp-block-paragraph">姓（A列）と名（B列）を結合して、フルネームを作る例です。</p>



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



<p class="wp-block-paragraph">複数配列の同時処理を使えば、姓と名を1つの列にまとめる作業が一括で片付きます。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: エラー値を安全に処理する</span></h3>



<p class="wp-block-paragraph">計算結果にエラーが含まれる可能性がある場合、エラーを別の値に置き換えます。</p>



<pre class="wp-block-code"><code>=MAP(B2:D10, LAMBDA(val, IFERROR(val / A2, &quot;N/A&quot;)))</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>を組み込めば、エラーが出たセルだけを「N/A」に置き換えられます。他のセルは正常に計算されますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン6: 日付・テキストの一括整形</span></h3>



<p class="wp-block-paragraph">MAP関数はテキスト整形や日付変換にも活躍します。</p>



<p class="wp-block-paragraph"><strong>日付フォーマットの一括変換</strong></p>



<p class="wp-block-paragraph">A列に「2026/5/1」形式の日付が入っているとき、「2026年5月1日」形式に一括変換するには次のようにします。</p>



<pre class="wp-block-code"><code>=MAP(A2:A20, LAMBDA(d, TEXT(d, &quot;yyyy年m月d日&quot;)))</code></pre>



<p class="wp-block-paragraph">TEXT関数と組み合わせることで、日付の書式変換が全セル一括で完了します。元のデータを変えずに「表示用の別列」を作りたいときに便利なパターンです。</p>



<p class="wp-block-paragraph"><strong>単位変換の一括処理</strong></p>



<p class="wp-block-paragraph">メートル単位の距離データをキロメートルに変換する例です。</p>



<pre class="wp-block-code"><code>=MAP(B2:B20, LAMBDA(m, m / 1000 &amp; &quot; km&quot;))</code></pre>



<p class="wp-block-paragraph">数値変換と文字列の結合を組み合わせることで、「5000 m → 5 km」のような単位付きの表示列を一括生成できます。</p>



<p class="wp-block-paragraph"><strong>部分文字列の抽出・整形</strong></p>



<p class="wp-block-paragraph">社員番号「EMP-00123」のように「EMP-」プレフィックスが不要な場合、数字部分だけを取り出せます。</p>



<pre class="wp-block-code"><code>=MAP(A2:A20, LAMBDA(code, VALUE(MID(code, 5, 10))))</code></pre>



<p class="wp-block-paragraph">MID関数と組み合わせて、特定の位置から文字列を切り出す処理を全セルに一括適用できます。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン7: MAP関数とBYCOL・BYROWの二段階活用</span></h3>



<p class="wp-block-paragraph">MAP関数とBYCOL・BYROW関数は、「変換してから集計する」という二段階処理で組み合わせることができます。</p>



<p class="wp-block-paragraph">たとえば、売上データ（B2:D4）に欠損値（空白）が混じっている場合、まずMAPで空白を0に補完してから、BYCOLで列ごとに合計を出す流れです。</p>



<pre class="wp-block-code"><code>=BYCOL(MAP(B2:D4, LAMBDA(val, IF(val=&quot;&quot;, 0, val))), LAMBDA(col, SUM(col)))</code></pre>



<p class="wp-block-paragraph">処理の流れはこうなります。</p>



<ol class="wp-block-list"><li>MAP関数が各セルを走査し、空白を0に置き換えた新しい配列を作る</li><li>BYCOL関数がその配列を列ごとに処理してSUMを計算する</li></ol>



<p class="wp-block-paragraph">MAP単体では「セルを変換するが集計はしない」、BYCOLは「変換前の配列しか受け取れない」という制約をそれぞれ持っています。二段階にすることで、「欠損補完してから集計」「テキスト整形してから行ごとに結合」といった複雑な処理をスマートに実装できます。</p>



<p class="wp-block-paragraph">同様に、BYROWと組み合わせれば「各行の最大値だけを使って行ごとに合計」なども実現できます。</p>



<pre class="wp-block-code"><code>=BYROW(MAP(B2:D10, LAMBDA(val, IF(val &gt; 100, val, 0))), LAMBDA(row, SUM(row)))</code></pre>



<p class="wp-block-paragraph">この例では、100超のセルだけを残して（他は0に置き換え）、行ごとにSUMを取っています。</p>



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



<p class="wp-block-paragraph">MAP関数と似た機能を持つのが<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数</a>です。どちらも「範囲に処理を一括適用する」関数ですが、得意分野が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MAP関数</th><th>ARRAYFORMULA関数</th></tr></thead><tbody><tr><td>処理の定義方法</td><td>LAMBDA関数で自由に記述</td><td>既存関数をそのまま使用</td></tr><tr><td>複数配列の同時処理</td><td>対応（配列をいくつでも渡せる）</td><td>非対応（1つの数式で処理）</td></tr><tr><td>複雑な条件分岐</td><td>得意（LAMBDA内で自由に組める）</td><td>シンプルな条件のみ</td></tr><tr><td>学習コスト</td><td>やや高い（LAMBDA関数の理解が必要）</td><td>低い（既存関数を囲むだけ）</td></tr><tr><td>パフォーマンス</td><td>大量データではやや遅い</td><td>高速</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>使い分けの目安はこうです。</strong></p>



<ul class="wp-block-list"><li><strong>既存関数をそのまま範囲に適用したい</strong> → ARRAYFORMULA関数</li><li><strong>LAMBDAで複雑な処理を定義したい・複数配列を同時に処理したい</strong> → MAP関数</li></ul>



<h3 class="wp-block-heading"><span id="toc18">ARRAYFORMULA関数で書ける例</span></h3>



<p class="wp-block-paragraph">たとえば「各セルに2を掛ける」程度のシンプルな処理なら、ARRAYFORMULA関数のほうが簡潔です。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(B2:D4 * 2)</code></pre>



<p class="wp-block-paragraph">MAP関数で書くと <code>=MAP(B2:D4, LAMBDA(val, val * 2))</code> になります。結果は同じですが、ARRAYFORMULA関数のほうが短くて読みやすいですよね。</p>



<h3 class="wp-block-heading"><span id="toc19">MAP関数でないとできない例</span></h3>



<p class="wp-block-paragraph">一方、複数の配列を突き合わせて処理するケースはMAP関数の出番です。</p>



<pre class="wp-block-code"><code>=MAP(B2:D4, F2:H4, LAMBDA(actual, target, IF(actual &gt;= target, &quot;OK&quot;, &quot;NG&quot;)))</code></pre>



<p class="wp-block-paragraph">「売上」と「目標」の2つの表を突き合わせて、達成・未達を判定しています。ARRAYFORMULA関数でも <code>=ARRAYFORMULA(IF(B2:D4>=F2:H4,"OK","NG"))</code> と書けますが、LAMBDAで複雑な処理を組み立てられるのはMAP関数だけです。</p>



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



<p class="wp-block-paragraph">LAMBDA系関数には<a href="https://mashukabu.com/spreadsheet-bycol-function/">BYCOL関数</a>と<a href="https://mashukabu.com/spreadsheet-byrow-function/">BYROW関数</a>もありますが、処理の粒度がまったく異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MAP関数</th><th>BYCOL関数</th><th>BYROW関数</th></tr></thead><tbody><tr><td>処理単位</td><td>セル（1つずつ）</td><td>列（まとめて）</td><td>行（まとめて）</td></tr><tr><td>結果の形</td><td>元の配列と同じサイズ</td><td>横1行</td><td>縦1列</td></tr><tr><td>向いている処理</td><td>変換・加工</td><td>列ごとの集計</td><td>行ごとの集計</td></tr><tr><td>LAMBDAに渡される値</td><td>各セルの値</td><td>各列全体（配列）</td><td>各行全体（配列）</td></tr><tr><td>複数配列の同時処理</td><td>対応</td><td>非対応</td><td>非対応</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>使い分けの目安はこうです。</strong></p>



<ul class="wp-block-list"><li><strong>各セルを個別に変換したい</strong> → MAP関数</li><li><strong>列ごとにまとめて集計したい</strong> → BYCOL関数</li><li><strong>行ごとにまとめて集計したい</strong> → BYROW関数</li></ul>



<p class="wp-block-paragraph">MAP関数は「セルごと」、BYCOL・BYROWは「まとめて集計」。この違いを押さえておけば迷いませんよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「合計や平均を出したい」ならBYCOL・BYROW関数、「各セルの値を変換・加工したい」ならMAP関数です。「集計か変換か」で選んでくださいね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc21">LAMBDA系関数の全体像</span></h2>



<p class="wp-block-paragraph">スプレッドシートには、LAMBDA関数と組み合わせて使う関数が複数あります。全体像を把握しておくと、どの場面でどの関数を使うか判断しやすくなりますよ。</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>元と同じ形</td><td>セルごとの変換・加工</td></tr><tr><td>BYCOL</td><td>列ごと</td><td>横1行</td><td>列ごとの集計</td></tr><tr><td>BYROW</td><td>行ごと</td><td>縦1列</td><td>行ごとの集計</td></tr><tr><td>REDUCE</td><td>配列全体</td><td>1つの値</td><td>全体を1つに集約</td></tr><tr><td>SCAN</td><td>累積</td><td>縦1列</td><td>累積計算の中間結果</td></tr><tr><td>MAKEARRAY</td><td>行×列</td><td>新しい配列</td><td>計算で配列を生成</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">MAP関数は「各セルを個別に変換する」という、最も直感的な使い方の関数です。配列処理のファーストチョイスとして覚えておくと便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc22">MAP関数のネストと多段変換</span></h2>



<h3 class="wp-block-heading"><span id="toc23">MAP関数を入れ子にする</span></h3>



<p class="wp-block-paragraph">MAP関数はLAMBDA関数の処理部分に別のMAP関数を入れ子にできます。ただし、同一の配列に対して複数の変換を順番にかけたい場合は、MAP関数を重ねるより<strong>LAMBDAの処理内に複数の関数を組み合わせる</strong>ほうがシンプルです。</p>



<p class="wp-block-paragraph">たとえば「空白を0に置き換えてから四捨五入する」処理を1つのMAPで書くとこうなります。</p>



<pre class="wp-block-code"><code>=MAP(B2:D10, LAMBDA(val, ROUND(IF(val=&quot;&quot;, 0, val), 0)))</code></pre>



<p class="wp-block-paragraph">LAMBDA関数の中にIF関数とROUND関数の両方を入れることで、2つの変換を1回のMAPで完結させています。「変換1してから変換2する」という流れは、LAMBDA内でネストして書くのが基本です。</p>



<h3 class="wp-block-heading"><span id="toc24">複数配列を使った条件付きマスキング</span></h3>



<p class="wp-block-paragraph">複数配列の同時処理を使うと、「フラグ列に応じてデータを出し分ける」処理が簡潔に書けます。</p>



<p class="wp-block-paragraph">A列にフラグ（1 or 0）、B列に数値データがあるとき、フラグが1のセルだけ値を表示し、0のセルは空白にするには次のように書きます。</p>



<pre class="wp-block-code"><code>=MAP(A2:A20, B2:B20, LAMBDA(flag, val, IF(flag=1, val, &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph">2つの配列の同じ行のデータがLAMBDAに渡されるため、「条件列」と「データ列」を突き合わせた処理がワンステップで実現できます。フラグによるデータのマスキングや、条件に応じた値の切り替えに役立つパターンです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>MAP関数の処理部分（LAMBDA内）は自由度が高く、IF・IFERROR・TEXT・ROUNDなどほぼすべての関数を組み合わせられます。「セルごとに何かしたい」と思ったら、まずMAP + LAMBDAで書けないか考えてみると、スマートな数式になることが多いですよ。</p></blockquote>



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



<p class="wp-block-paragraph">MAP関数はLAMBDA関数と組み合わせるため、構文のミスが起こりやすいです。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#NAME?</code></td><td>関数名のスペルミス</td><td>「MAP」のスペルを確認してください</td></tr><tr><td><code>#NAME?</code></td><td>Excelで使用しようとした</td><td>MAP関数はGoogleスプレッドシート専用です</td></tr><tr><td><code>#NAME?</code></td><td>LAMBDA関数の仮引数名が不正</td><td>仮引数名にセル参照（A1等）やスペースは使えません</td></tr><tr><td><code>#VALUE!</code></td><td>複数配列のサイズが不一致</td><td>MAP関数に複数の配列を渡す場合、すべて同じ行数×列数にしてください</td></tr><tr><td><code>#REF!</code></td><td>出力先のセルにデータがある</td><td>結果が元の配列と同じサイズで展開されるため、出力先に十分な空きスペースを確保してください</td></tr><tr><td><code>#ERROR!</code></td><td>LAMBDAの引数の数が合わない</td><td>配列が1つならLAMBDAの仮引数も1つ、配列が2つなら仮引数も2つにしてください</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に多いのが「複数配列のサイズ不一致」エラーです。MAP関数に複数の配列を渡すとき、たとえばB2:D4（3行3列）とF2:H5（4行3列）のように行数が違うと<code>#VALUE!</code>になります。範囲を揃えてから試してくださいね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LAMBDA関数の仮引数名で迷ったら、<code>val</code>や<code>v</code>を使うのがおすすめです。複数配列を渡すときは、<code>a</code>と<code>b</code>や、意味のある名前（<code>actual</code>と<code>target</code>など）を使うと読みやすくなります。</p></blockquote>



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



<p class="wp-block-paragraph">MAP関数は、配列の各セルにLAMBDA関数で処理を適用し、結果を元の配列と同じサイズで返す関数です。セルごとの変換・加工を一括で自動化できるので、データクリーニングや表の加工がグッと楽になります。</p>



<p class="wp-block-paragraph">この記事のポイントをおさらいしておきましょう。</p>



<ul class="wp-block-list"><li>MAP関数は<code>=MAP(配列, LAMBDA(val, 処理))</code>で、各セルに同じ処理を一括適用する</li><li>複数の配列を渡して、対応するセル同士を処理できるのがMAP関数ならではの強み</li><li>シンプルな計算はARRAYFORMULA関数、LAMBDA処理や複数配列はMAP関数と使い分ける</li><li>BYCOL・BYROW関数は集計向き、MAP関数は変換・加工向き</li><li>Googleスプレッドシート独自の関数で、Excelでは使えない</li></ul>



<p class="wp-block-paragraph">まずは<code>=MAP(B2:D4, LAMBDA(val, ROUND(val, 0)))</code>のシンプルな四捨五入から試してみてください。一度使い方を覚えれば、IF関数やTEXT関数など、処理部分を入れ替えるだけでさまざまな変換に応用できますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc27">この記事で紹介した関数・関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-bycol-function/">スプレッドシートのBYCOL関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-byrow-function/">スプレッドシートのBYROW関数の使い方</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><li><a href="https://mashukabu.com/spreadsheet-if-function/">スプレッドシートのIF関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-iferror-function/">スプレッドシートのIFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-text-function/">スプレッドシートのTEXT関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-map-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのPROPER関数の使い方｜先頭大文字に一括変換するコツとUPPER・LOWERとの使い分け</title>
		<link>https://mashukabu.com/spreadsheet-proper-function/</link>
					<comments>https://mashukabu.com/spreadsheet-proper-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 09:47:59 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ARRAYFORMULA]]></category>
		<category><![CDATA[LOWER関数]]></category>
		<category><![CDATA[MAP関数]]></category>
		<category><![CDATA[PROPER関数]]></category>
		<category><![CDATA[UPPER関数]]></category>
		<category><![CDATA[データ正規化]]></category>
		<category><![CDATA[先頭大文字]]></category>
		<category><![CDATA[文字列変換]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4306</guid>

					<description><![CDATA[スプレッドシートのPROPER関数で英単語の先頭だけを大文字に変換する方法を完全解説。基本構文から数字・記号の落とし穴、McDonald型固有名詞の補正、TRIMとの組合せ、ARRAYFORMULA・MAP/LAMBDAでの列一括変換、UPPER・LOWERとの使い分け、FAQ6問までを実務目線で網羅します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで英語の人名や地名を管理していると、表記がバラバラで困ることってありますよね。「john smith」と「JOHN SMITH」が混在していると、一覧表の見栄えも整いませんし、送付状やメール本文にそのまま流し込むと先方に失礼な印象を与えてしまいます。</p>



<p class="wp-block-paragraph">かといって、数百件・数千件のデータを1件ずつ手直しするのは現実的ではありません。そんなときに頼りになるのが PROPER 関数です。各単語の先頭だけを大文字に変換し、それ以外を小文字にそろえてくれます。この記事では、スプレッドシートの PROPER 関数の基本から、意外な落とし穴、実務で使えるクレンジング応用までを、同僚に教える感覚でわかりやすく解説していきます。</p>




  <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">PROPER関数とは？スプレッドシートで先頭だけ大文字に変換する基本</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">PROPER関数の使い方｜実務で役立つ4つの変換パターン</a><ol><li><a href="#toc6" tabindex="0">英語の人名・地名を正規化する</a></li><li><a href="#toc7" tabindex="0">カンマ・ハイフン区切りの文字列を整える</a></li><li><a href="#toc8" tabindex="0">TRIM関数と組み合わせてデータクレンジング</a></li><li><a href="#toc9" tabindex="0">SUBSTITUTE関数で全角スペース・特殊区切りに対応する</a></li></ol></li><li><a href="#toc10" tabindex="0">PROPERの意外な動作と注意点</a><ol><li><a href="#toc11" tabindex="0">日本語・全角英字には効果がない</a></li><li><a href="#toc12" tabindex="0">数字・記号の後の文字も大文字になる</a></li><li><a href="#toc13" tabindex="0">McDonald・iPhone・USAなど固有名詞は補正が必要</a></li></ol></li><li><a href="#toc14" tabindex="0">UPPER・LOWER・PROPERの違いと使い分け</a><ol><li><a href="#toc15" tabindex="0">3関数の比較表</a></li><li><a href="#toc16" tabindex="0">どれを使うか迷ったときの判断フロー</a></li></ol></li><li><a href="#toc17" tabindex="0">ARRAYFORMULA・MAP/LAMBDAでの列一括変換テクニック</a><ol><li><a href="#toc18" tabindex="0">ARRAYFORMULAで列全体を一括変換</a></li><li><a href="#toc19" tabindex="0">IF と組み合わせて空白行を除外する</a></li><li><a href="#toc20" tabindex="0">MAP/LAMBDA で代替する書き方</a></li></ol></li><li><a href="#toc21" tabindex="0">よくある質問</a></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">PROPER関数とは？スプレッドシートで先頭だけ大文字に変換する基本</span></h2>



<p class="wp-block-paragraph">PROPER 関数は、文字列に含まれる各単語の先頭文字だけを大文字に変換する関数です。それ以外のアルファベットはすべて小文字になります。</p>



<h3 class="wp-block-heading"><span id="toc2">読み方・語源</span></h3>



<p class="wp-block-paragraph">読み方は「プロパー」です。英語の「proper（適切な・正式な）」が由来になっています。人名や地名を「正式な表記」に整えるイメージですね。「John Smith」のように、固有名詞らしい体裁にそろえてくれる関数だと覚えておけば十分です。</p>



<p class="wp-block-paragraph">たとえば「john smith」を渡すと「John Smith」が返ってきます。日本語や数字、記号はそのまま変わりません。半角アルファベットだけをピンポイントで整えてくれるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc3">構文と引数</span></h3>



<p class="wp-block-paragraph">PROPER 関数の構文はとてもシンプルです。</p>



<p class="wp-block-paragraph"><code>=PROPER(text)</code></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>text</td><td>必須</td><td>先頭を大文字に変換したい文字列またはセル参照</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数にセル参照を指定するのが一般的です。直接文字列を入れる場合は <code>=PROPER("hello world")</code> のようにダブルクォーテーションで囲みます。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-upper-function/">UPPER関数</a>や<a href="https://mashukabu.com/spreadsheet-lower-function/">LOWER関数</a>と同じく引数1つだけなので、覚えることはほとんどありません。</p>



<h3 class="wp-block-heading"><span id="toc4">基本的な使用例</span></h3>



<p class="wp-block-paragraph">実際の動きを見てみましょう。A列に入力された文字列に対して、B列で PROPER 関数を使います。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<figure class="wp-block-table"><table><thead><tr><th>セル</th><th>入力値</th><th>数式</th><th>結果</th></tr></thead><tbody><tr><td>B2</td><td>john smith</td><td><code>=PROPER(A2)</code></td><td>John Smith</td></tr><tr><td>B3</td><td>GOOGLE SHEETS</td><td><code>=PROPER(A3)</code></td><td>Google Sheets</td></tr><tr><td>B4</td><td>new york city</td><td><code>=PROPER(A4)</code></td><td>New York City</td></tr><tr><td>B5</td><td>東京office</td><td><code>=PROPER(A5)</code></td><td>東京Office</td></tr><tr><td>B6</td><td>（空セル）</td><td><code>=PROPER(A6)</code></td><td>（空文字列）</td></tr></tbody></table></figure>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_proper-basic.png" alt="02 formula proper basic" /></figure>



<p class="wp-block-paragraph">注目してほしいのは B3 の結果です。「GOOGLE SHEETS」のようにすべて大文字の文字列でも、先頭だけが大文字になり、残りはすべて小文字に変換されます。「先頭以外は強制的に小文字にする」という点が、PROPER の大事な性質です。</p>



<p class="wp-block-paragraph">B5 のように日本語と英字が混在していても問題ありません。日本語の「東京」はそのまま残り、英字の「office」だけが「Office」に変換されます。</p>



<p class="wp-block-paragraph">B6 のように空のセルを渡した場合は空文字列が返ります。エラーにはならないため、ARRAYFORMULA で広い範囲にまとめて適用しても安心です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_proper-basic.png" alt="03 result proper basic" /></figure>



<h2 class="wp-block-heading"><span id="toc5">PROPER関数の使い方｜実務で役立つ4つの変換パターン</span></h2>



<p class="wp-block-paragraph">基本がわかったところで、実務でよく使う4つの場面を紹介します。コピーしてすぐに使えるパターンばかりなので、ぜひ手元のデータで試してみてください。</p>



<h3 class="wp-block-heading"><span id="toc6">英語の人名・地名を正規化する</span></h3>



<p class="wp-block-paragraph">顧客リストや住所録で、英語の人名・地名の表記がバラバラになっていませんか？ PROPER 関数で一括変換しましょう。</p>



<p class="wp-block-paragraph">たとえば、A列に人名が入っているとします。B2 に次の数式を入れてください。</p>



<p class="wp-block-paragraph"><code>=PROPER(A2)</code></p>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力）</th><th>B列（変換後）</th></tr></thead><tbody><tr><td>john smith</td><td>John Smith</td></tr><tr><td>MARY JOHNSON</td><td>Mary Johnson</td></tr><tr><td>robert brown</td><td>Robert Brown</td></tr><tr><td>ANNA KIM</td><td>Anna Kim</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">すべて「先頭大文字＋残り小文字」の形式に統一されます。B2 をコピーして下方向に貼り付ければ、一覧全体を一気に整えられますよ。</p>



<p class="wp-block-paragraph">請求書や送付状で相手の名前を正しく表記したいときにも便利です。差し込み印刷の前処理として組み込んでおくと、表記揺れによる先方からのクレームを防げます。</p>



<h3 class="wp-block-heading"><span id="toc7">カンマ・ハイフン区切りの文字列を整える</span></h3>



<p class="wp-block-paragraph">PROPER 関数は、スペースだけでなくカンマやハイフンの後も「単語の区切り」として扱います。区切り文字を含む文字列でも、各単語の先頭がきちんと大文字になります。</p>



<p class="wp-block-paragraph"><code>=PROPER(A2)</code></p>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力）</th><th>B列（変換後）</th></tr></thead><tbody><tr><td>los angeles, california</td><td>Los Angeles, California</td></tr><tr><td>new-york</td><td>New-York</td></tr><tr><td>o&#8217;brien</td><td>O&#8217;Brien</td></tr><tr><td>smith, john</td><td>Smith, John</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">アポストロフィの直後も大文字になるため、「o&#8217;brien」が「O&#8217;Brien」と正しく変換されます。住所や複合姓の整形にそのまま使えますね。</p>



<p class="wp-block-paragraph">ただし、英語の所有格（<code>john's book</code>）にそのまま使うと「John&#8217;S Book」のように「S」まで大文字になってしまいます。所有格を扱う場合は後述の SUBSTITUTE 補正で <code>'s</code> を <code>'s</code> に戻すなど、ひと工夫加えましょう。</p>



<h3 class="wp-block-heading"><span id="toc8">TRIM関数と組み合わせてデータクレンジング</span></h3>



<p class="wp-block-paragraph">外部システムから取り込んだデータには、余分なスペースが紛れ込んでいることがよくあります。PROPER 関数と<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>を組み合わせれば、スペース除去と先頭大文字変換を一度に処理できます。</p>



<p class="wp-block-paragraph"><code>=PROPER(TRIM(A2))</code></p>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力）</th><th>B列（変換後）</th></tr></thead><tbody><tr><td>john  smith</td><td>John Smith</td></tr><tr><td>MARY   JOHNSON</td><td>Mary Johnson</td></tr><tr><td>robert  brown</td><td>Robert Brown</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">先に TRIM 関数で余分なスペースを除去してから、PROPER 関数で先頭大文字に変換する流れです。名前のクレンジング処理として定番のパターンなので、覚えておくと重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">SUBSTITUTE関数で全角スペース・特殊区切りに対応する</span></h3>



<p class="wp-block-paragraph">TRIM 関数だけだと、全角スペースは除去されません。全角と半角が混在している CSV を扱う場合は、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>を組み合わせて、先に全角スペースを半角に置換してから TRIM と PROPER をかけます。</p>



<p class="wp-block-paragraph"><code>=PROPER(TRIM(SUBSTITUTE(A2,"　"," ")))</code></p>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力）</th><th>B列（変換後）</th></tr></thead><tbody><tr><td>john　smith</td><td>John Smith</td></tr><tr><td>MARY　　JOHNSON</td><td>Mary Johnson</td></tr><tr><td>ANNA　KIM</td><td>Anna Kim</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。「全角スペースを半角に直す」→「連続スペースを1つにまとめる」→「先頭大文字にそろえる」を1つの数式で連続処理しているだけです。</p>



<p class="wp-block-paragraph">タブ区切りや改行で崩れたデータの場合は、SUBSTITUTE の対象文字を <code>CHAR(9)</code>（タブ）や <code>CHAR(10)</code>（改行）に置き換えれば応用できます。</p>



<h2 class="wp-block-heading"><span id="toc10">PROPERの意外な動作と注意点</span></h2>



<p class="wp-block-paragraph">PROPER 関数はシンプルですが、知らないと意図しない結果になるクセがいくつかあります。実務で使う前に必ずチェックしておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">日本語・全角英字には効果がない</span></h3>



<p class="wp-block-paragraph">PROPER 関数が変換するのは半角アルファベットだけです。日本語のひらがな・カタカナ・漢字には何も起きません。</p>



<p class="wp-block-paragraph"><code>=PROPER("こんにちは世界")</code> → こんにちは世界</p>



<p class="wp-block-paragraph">日本語だけのセルに使っても、そのまま返ってくるだけです。エラーにはならないので、英語と日本語が混在するデータに一括適用しても問題ありません。</p>



<p class="wp-block-paragraph">また、全角英字（ａｂｃ、ＡＢＣ など）も変換されません。Google スプレッドシートには Excel の ASC 関数（全角→半角変換）が存在しないため、全角英字を含むデータは先に<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で半角に置換してから PROPER 関数を使いましょう。</p>



<p class="wp-block-paragraph">たとえば 1文字ずつ全角→半角を当てる対応は手間なので、データ取り込み段階で「半角英数のみ」と決めてしまうのが現実的です。</p>



<h3 class="wp-block-heading"><span id="toc12">数字・記号の後の文字も大文字になる</span></h3>



<p class="wp-block-paragraph">PROPER 関数は「アルファベット以外の文字」の直後を「単語の先頭」とみなします。そのため、数字や記号の直後にあるアルファベットも大文字に変換されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>入力値</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td>2nd floor</td><td>2Nd Floor</td><td>数字の直後の n が大文字に</td></tr><tr><td>room#3a</td><td>Room#3A</td><td># と 3 の直後が大文字に</td></tr><tr><td>hello/world</td><td>Hello/World</td><td>スラッシュも区切りと判断</td></tr><tr><td>john&#8217;s book</td><td>John&#8217;S Book</td><td>アポストロフィの直後の s が大文字に</td></tr><tr><td>e-mail</td><td>E-Mail</td><td>ハイフンの直後の m が大文字に</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「2nd」が「2Nd」になるのは、意図した結果ではないことが多いですよね。この動作を知らずに使うと、住所や所有格のデータが崩れてしまいます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/05_result_proper-pitfall.png" alt="05 result proper pitfall" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>数字・記号を含む文字列に PROPER 関数を使うときは、結果を必ずサンプルで確認しましょう。意図しない変換があった場合は、後段で SUBSTITUTE 関数で個別に戻すのが確実です。たとえば <code>=SUBSTITUTE(PROPER(A2),"2Nd","2nd")</code> のように対症療法的に置換します。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">McDonald・iPhone・USAなど固有名詞は補正が必要</span></h3>



<p class="wp-block-paragraph">PROPER 関数は「各単語の先頭を大文字、残りを小文字」にする関数です。独自の大文字ルールを持つ固有名詞には対応できません。</p>



<figure class="wp-block-table"><table><thead><tr><th>入力値</th><th>PROPERの結果</th><th>期待値</th></tr></thead><tbody><tr><td>mcdonald</td><td>Mcdonald</td><td>McDonald</td></tr><tr><td>iphone</td><td>Iphone</td><td>iPhone</td></tr><tr><td>usa</td><td>Usa</td><td>USA</td></tr><tr><td>jpmorgan</td><td>Jpmorgan</td><td>JPMorgan</td></tr><tr><td>ipad</td><td>Ipad</td><td>iPad</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「McDonald」の「D」や「iPhone」の「P」は、単語の途中にある大文字です。PROPER 関数はこれを小文字に変えてしまいます。「USA」「JPMorgan」のような略語混じりの社名も同様です。</p>



<p class="wp-block-paragraph">こうしたケースでは、PROPER 関数の後に SUBSTITUTE 関数で個別に補正しましょう。</p>



<p class="wp-block-paragraph"><code>=SUBSTITUTE(SUBSTITUTE(PROPER(A2),"Mcdonald","McDonald"),"Iphone","iPhone")</code></p>



<p class="wp-block-paragraph">頻出する固有名詞が10語以上ある場合は、置換ペアを別シートに辞書として持たせ、REGEXREPLACE や LAMBDA で順番に当てていく方法もあります。件数が少なければ手動修正のほうが早い場面も多いので、PROPER は「おおまかに整える」ツールとして使い、細かい例外は別途対応する割り切りがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc14">UPPER・LOWER・PROPERの違いと使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには、文字の大文字・小文字を操作する関数が3つあります。PROPER 関数と似た機能を持つ<a href="https://mashukabu.com/spreadsheet-upper-function/">UPPER関数</a>、<a href="https://mashukabu.com/spreadsheet-lower-function/">LOWER関数</a>との違いを整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc15">3関数の比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>入力例</th><th>出力例</th><th>主な用途</th></tr></thead><tbody><tr><td>UPPER</td><td>すべて大文字に変換</td><td>hello world</td><td>HELLO WORLD</td><td>製品コード、国コード、SKU</td></tr><tr><td>LOWER</td><td>すべて小文字に変換</td><td>Hello World</td><td>hello world</td><td>メールアドレス、URL、ID</td></tr><tr><td>PROPER</td><td>各単語の先頭だけ大文字に変換</td><td>hello world</td><td>Hello World</td><td>人名、都市名、社名（注意点あり）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">構文はどれも同じ形です。<code>=UPPER(text)</code> <code>=LOWER(text)</code> <code>=PROPER(text)</code> のように、引数はひとつだけです。覚えてしまえば3関数まとめて使い分けられますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">どれを使うか迷ったときの判断フロー</span></h3>



<p class="wp-block-paragraph">3つの関数を使い分けるポイントは「最終的にどう表示したいか」です。次の基準で判断してみてください。</p>



<ul class="wp-block-list"><li>全部大文字にしたい → <a href="https://mashukabu.com/spreadsheet-upper-function/">UPPER関数</a>（例: 製品コード、国コード、部署コード）</li><li>全部小文字にしたい → <a href="https://mashukabu.com/spreadsheet-lower-function/">LOWER関数</a>（例: メールアドレス、URL、SNSアカウント）</li><li>先頭だけ大文字にしたい → PROPER 関数（例: 人名、都市名の表記統一）</li><li>固有名詞の独自ルールを残したい → PROPER 後に SUBSTITUTE で補正、もしくは手動修正</li></ul>



<p class="wp-block-paragraph">迷ったら、まずデータの用途を考えてみてください。コード類は大文字統一、メールアドレスや URL は小文字統一が一般的です。人名や地名は PROPER が便利ですが、固有名詞のクセには気をつけましょう。</p>



<h2 class="wp-block-heading"><span id="toc17">ARRAYFORMULA・MAP/LAMBDAでの列一括変換テクニック</span></h2>



<p class="wp-block-paragraph">データが数百行・数千行あると、数式をコピーするのも手間ですよね。スプレッドシートには配列対応のテクニックが2系統あるので、好きなほうを選んでください。</p>



<h3 class="wp-block-heading"><span id="toc18">ARRAYFORMULAで列全体を一括変換</span></h3>



<p class="wp-block-paragraph">定番は ARRAYFORMULA です。B2 セルに次の数式を入力してください。</p>



<p class="wp-block-paragraph"><code>=ARRAYFORMULA(PROPER(A2:A))</code></p>



<p class="wp-block-paragraph">これだけで、A2 以降のすべての行に対して PROPER 関数が適用されます。A列にデータを追加すると、B列にも自動で変換結果が表示されます。</p>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。「PROPER 関数を配列（複数セル）にまとめて適用する」だけです。</p>



<p class="wp-block-paragraph">ひとつ注意点があります。ARRAYFORMULA を使っている場合、B列の途中にデータを手入力するとエラーになります。B列はすべて ARRAYFORMULA に任せて、手入力しないようにしてください。</p>



<h3 class="wp-block-heading"><span id="toc19">IF と組み合わせて空白行を除外する</span></h3>



<p class="wp-block-paragraph">空白行に「（空欄）」と表示されるのが気になる場合は、IF 関数と組み合わせましょう。</p>



<p class="wp-block-paragraph"><code>=ARRAYFORMULA(IF(A2:A="","",PROPER(A2:A)))</code></p>



<p class="wp-block-paragraph">A列が空白のときは B列も空白にする、という条件を加えた数式です。シートの見た目がスッキリするのでおすすめですよ。</p>



<p class="wp-block-paragraph">TRIM 関数との組み合わせも ARRAYFORMULA で一括処理できます。</p>



<p class="wp-block-paragraph"><code>=ARRAYFORMULA(IF(A2:A="","",PROPER(TRIM(A2:A))))</code></p>



<p class="wp-block-paragraph">人名リストの一括クレンジングなど、大量データの前処理にぜひ活用してみてください。</p>



<h3 class="wp-block-heading"><span id="toc20">MAP/LAMBDA で代替する書き方</span></h3>



<p class="wp-block-paragraph">Google スプレッドシートには 2022 年以降、LAMBDA 系の関数（MAP、BYROW、BYCOL など）が追加されました。MAP を使えば ARRAYFORMULA と同じことをよりシンプルに書けます。</p>



<p class="wp-block-paragraph"><code>=MAP(A2:A10, LAMBDA(v, PROPER(v)))</code></p>



<p class="wp-block-paragraph"><code>v</code> は各セルの値を表す仮の変数名で、自由に名前を付けられます。やりたい処理が複雑になっても、LAMBDA 内に書き足していけるのが利点です。たとえば TRIM と PROPER を組み合わせるなら次のように書きます。</p>



<p class="wp-block-paragraph"><code>=MAP(A2:A10, LAMBDA(v, IF(v="", "", PROPER(TRIM(v)))))</code></p>



<p class="wp-block-paragraph">固定範囲（A2:A10）を指定する書き方になるため、行数が読めない場合は ARRAYFORMULA のほうが向いています。一方で、複数列を別々の処理にしたい・処理を後で拡張したいといった場合は MAP のほうが読みやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc21">よくある質問</span></h2>



<p class="wp-block-paragraph">PROPER 関数を使うときに気になるポイントをまとめました。</p>



<p class="wp-block-paragraph"><strong>Q. 元のセルのデータは書き換わりますか？</strong></p>



<p class="wp-block-paragraph">いいえ、書き換わりません。PROPER 関数は別のセルに変換結果を返します。元データを置き換えたい場合は、変換結果の列をコピーして、元の列に「値のみ貼り付け」（Ctrl + Shift + V）してください。</p>



<p class="wp-block-paragraph"><strong>Q. 日本語が含まれていても使えますか？</strong></p>



<p class="wp-block-paragraph">はい、使えます。PROPER 関数は半角アルファベットだけを変換します。日本語・数字・記号はそのまま残るので、「東京office」のような混在テキストでも安心です。</p>



<p class="wp-block-paragraph"><strong>Q. 全角英字（ａｂｃ）も変換されますか？</strong></p>



<p class="wp-block-paragraph">残念ながら、全角英字は変換されません。Google スプレッドシートには全角→半角変換の ASC 関数がないため、先に<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で半角に置換してから PROPER 関数を適用してください。CSV 取り込み段階で「半角英数のみ」とルール化しておくのが現実的です。</p>



<p class="wp-block-paragraph"><strong>Q. Excel の PROPER 関数と違いはありますか？</strong></p>



<p class="wp-block-paragraph">構文も動作も完全に同じです。スプレッドシートで作った数式は Excel でもそのまま動きます。互換性を気にせず使って大丈夫ですよ。</p>



<p class="wp-block-paragraph"><strong>Q. 空のセルを参照するとエラーになりますか？</strong></p>



<p class="wp-block-paragraph">エラーにはなりません。空のセルを渡すと空文字列が返ります。大量のデータに ARRAYFORMULA で一括適用しても、空白行でエラーが出る心配はありません。</p>



<p class="wp-block-paragraph"><strong>Q. ARRAYFORMULA と MAP/LAMBDA はどちらが速いですか？</strong></p>



<p class="wp-block-paragraph">数百〜数千行程度なら、体感差はほぼありません。数万行を超えるような巨大データでは、ARRAYFORMULA のほうがやや軽い傾向があります。可読性を重視するなら MAP/LAMBDA、対応行が読めない場合は ARRAYFORMULA、と使い分けるのがおすすめです。</p>



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



<p class="wp-block-paragraph">PROPER 関数は、各単語の先頭だけを大文字に変換できるシンプルな関数です。この記事のポイントを振り返っておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=PROPER(text)</code> で引数はひとつだけ</li><li>半角アルファベットのみ変換される（日本語・数字・全角英字はそのまま）</li><li>英語の人名・地名・住所の表記統一に便利</li><li>数字や記号（&#8217;、#、/、- など）の直後も「単語の区切り」として扱われる点に注意</li><li>McDonald・iPhone・USA など固有名詞の独自ルールには対応できない（SUBSTITUTE で補正）</li><li>全角スペース混じりのデータは SUBSTITUTE → TRIM → PROPER の順で前処理する</li><li><a href="https://mashukabu.com/spreadsheet-upper-function/">UPPER関数</a>（全大文字）・<a href="https://mashukabu.com/spreadsheet-lower-function/">LOWER関数</a>（全小文字）との使い分けがポイント</li><li>ARRAYFORMULA か MAP/LAMBDA を組み合わせれば列全体を一括変換できる</li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>との組み合わせでスペース除去も同時に処理可能</li></ul>



<p class="wp-block-paragraph">データの正規化をさらに進めたい方は、<a href="https://mashukabu.com/spreadsheet-upper-function/">UPPER関数</a>や<a href="https://mashukabu.com/spreadsheet-lower-function/">LOWER関数</a>、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>もあわせてチェックしてみてください。大文字・小文字変換や特定文字列の置換にも役立ちます。PROPER をクレンジング処理の一部として組み込めば、毎月の名簿整理が一段とラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-proper-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
