<?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>Microsoft 365 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/microsoft-365/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 07 May 2026 21:29:27 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>Microsoft 365 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Google KeepとOneNote、どっちを使うべき？｜事務職のメモアプリ選び方ガイド</title>
		<link>https://mashukabu.com/google-keep-vs-onenote/</link>
					<comments>https://mashukabu.com/google-keep-vs-onenote/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 07 May 2026 21:29:27 +0000</pubDate>
				<category><![CDATA[仕事効率化]]></category>
		<category><![CDATA[Google Keep]]></category>
		<category><![CDATA[Google Workspace]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[OneNote]]></category>
		<category><![CDATA[ツール比較]]></category>
		<category><![CDATA[メモアプリ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6634</guid>

					<description><![CDATA[Google KeepとOneNoteのどちらを選ぶべきか、事務職の業務シーン別に比較しました。料金・連携・同期・共同編集の4観点で違いを整理し、6つの実務シーンでの推奨判定、3つの質問で決まる選び方フローチャート、両方併用するコツや移行時の注意点まで実践的に解説します。]]></description>
										<content:encoded><![CDATA[
<p>「会社のPCにOneNoteは入っているけど、私用のスマホではGoogle Keepの方が便利そう」——事務職の方なら一度はそんな迷いを経験しているのではないでしょうか。</p>



<p>メモアプリは毎日触れるツールなので、最初に選ぶアプリ次第で1日の業務効率がずいぶん変わるんですよね。この記事では、<strong>Google Keep</strong> と <strong>Microsoft OneNote</strong> のどちらが自分の仕事に向くかを、事務職の業務シーンに落とし込んで判定できるようにまとめました。</p>



<p>読み終わるころには「自分はこっち」と10秒で決められる状態になっているはずですよ。</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">Google KeepとOneNoteの違い【30秒で判定できる早見表】</a></li><li><a href="#toc2" tabindex="0">Google Keepの特徴｜こんな事務職に向いている</a><ol><li><a href="#toc3" tabindex="0">Google Keepのメリット</a></li><li><a href="#toc4" tabindex="0">Google Keepの弱点</a></li></ol></li><li><a href="#toc5" tabindex="0">OneNoteの特徴｜こんな事務職に向いている</a><ol><li><a href="#toc6" tabindex="0">OneNoteのメリット</a></li><li><a href="#toc7" tabindex="0">OneNoteの弱点</a></li></ol></li><li><a href="#toc8" tabindex="0">業務シーン別 ベスト選択表｜事務職の6シーンで比較</a></li><li><a href="#toc9" tabindex="0">失敗しない選び方フローチャート｜3つの質問で決まる</a></li><li><a href="#toc10" tabindex="0">両方併用するという選択肢｜実は事務職の現実解</a></li><li><a href="#toc11" tabindex="0">移行・乗り換え時の注意点</a></li><li><a href="#toc12" tabindex="0">まとめ｜あなたに合うメモアプリはこれ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Google KeepとOneNoteの違い【30秒で判定できる早見表】</span></h2>



<p>まず結論から先に、4つの観点で比較した早見表を見てください。「ざっくりどっちが何に強いか」がこれだけでつかめますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>Google Keep</th><th>OneNote</th></tr></thead><tbody><tr><td>料金</td><td>無料</td><td>無料版あり / Microsoft 365に含まれる</td></tr><tr><td>ノート構造</td><td>フラット（メモ単位、ラベル整理）</td><td>階層（ノートブック>セクション>ページ）</td></tr><tr><td>メモの長さ</td><td>短文向き（実用上は約2万字まで）</td><td>長文OK（議事録・ナレッジに最適）</td></tr><tr><td>添付ファイル</td><td>画像・音声のみ</td><td>画像・PDF・Excel・Wordなど可</td></tr><tr><td>手書き対応</td><td>スマホアプリのみ</td><td>PC・タブレット両方で本格対応</td></tr><tr><td>同期速度</td><td>速い（数秒）</td><td>やや遅い（数十秒〜数分）</td></tr><tr><td>共同編集</td><td>メモ単位</td><td>ノートブック単位</td></tr><tr><td>連携先</td><td>Google Workspace全般</td><td>Microsoft 365全般（Teams/Outlook含む）</td></tr></tbody></table></figure>



<p>ここから先は、それぞれの特徴と業務シーン別の向き不向きを、もう少し具体的に見ていきます。</p>



<h2 class="wp-block-heading"><span id="toc2">Google Keepの特徴｜こんな事務職に向いている</span></h2>



<p>Google Keep は Google が提供する無料のメモアプリです。Googleアカウントさえあれば誰でもすぐ使えて、Web版（keep.google.com）・Android・iOS で動きます。</p>



<p>「思いついた瞬間にメモして、すぐ見返せる」という軽さが最大の強みなんですよね。</p>



<h3 class="wp-block-heading"><span id="toc3">Google Keepのメリット</span></h3>



<ul class="wp-block-list"><li><strong>起動が速くて軽い</strong>: ブラウザでブックマークから keep.google.com を開くだけ。アプリのインストールも不要です</li><li><strong>スマホ↔PC同期がほぼリアルタイム</strong>: 電車内でスマホからメモを追加すると、オフィス着席時にはPCにも反映済みです</li><li><strong>チェックリストへの変換が1クリック</strong>: テキストメモを「＋」アイコンからチェックリストに切り替えできます</li><li><strong>ラベル＋色分けで整理が直感的</strong>: 案件名や業務種別でラベルを作って、色を変えるだけで一覧性が上がります</li><li><strong>Google Workspace との連携が自然</strong>: Gmail やカレンダー、ドキュメント、スプレッドシートのサイドパネルから直接呼び出せます</li><li><strong>完全無料</strong>: GWS の有料プランを契約していても追加課金なしで使えます</li></ul>



<p>Keepの基本操作と活用術は、別記事の <a href="https://mashukabu.com/google-keep-guide/">Google Keepの使い方完全ガイド｜事務職が仕事で使える7つの活用術</a> で詳しく解説しています。Keepを選んだ方はあわせてチェックしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc4">Google Keepの弱点</span></h3>



<ul class="wp-block-list"><li><strong>長文・大量情報には不向き</strong>: 1メモあたり実用上は2万字程度が上限。30分以上の会議の議事録には厳しいです</li><li><strong>添付ファイルは画像と音声のみ</strong>: ExcelやPDFの添付ができないので、ファイル付きのナレッジ管理には使えません</li><li><strong>構造化された整理ができない</strong>: ノートブックやフォルダの階層はなく、ラベルでの平面整理だけです</li><li><strong>オフライン編集はほぼ不可</strong>: 電波がない場所では基本使えません</li></ul>



<p>「短くて即座に書いて消す」用途には強いけれど、「ためこんで整理する」用途には向かないのが Keep の特徴ですね。</p>



<h2 class="wp-block-heading"><span id="toc5">OneNoteの特徴｜こんな事務職に向いている</span></h2>



<p>OneNote は Microsoft が提供するノートアプリです。Microsoft 365 に標準で入っており、無料版も配布されています。会社の標準環境が Microsoft 365 なら、追加導入なしで使い始められるのが強みなんですよね。</p>



<p>「あらゆる情報をひとつのノートブックに集約して整理する」という思想が根本にあります。</p>



<h3 class="wp-block-heading"><span id="toc6">OneNoteのメリット</span></h3>



<ul class="wp-block-list"><li><strong>3階層で情報を整理できる</strong>: ノートブック>セクション>ページの階層で、紙のバインダーに近い感覚で切り分けられます</li><li><strong>長文・大容量に強い</strong>: 1ページに大量のテキスト・画像・添付を詰め込んでも動作します</li><li><strong>ファイル添付・印刷イメージ埋め込みが可能</strong>: Excel・PDF・Wordをページ内に貼り付けて見せられます</li><li><strong>手書きメモが本格的</strong>: タッチペン対応のPCやタブレットでフリーフォーム描画ができ、図形認識・数式認識まで対応します</li><li><strong>画像内のテキストも検索対象</strong>: 撮影したホワイトボード画像の中の文字までヒットします</li><li><strong>オフライン完全対応</strong>: デスクトップアプリは電波がなくても編集でき、後で自動同期されます</li><li><strong>Microsoft 365 連携が充実</strong>: Outlookからのメール送付、Teamsへのタブ埋め込み、Excelとの貼り付けなど業務での使い回しが効きます</li></ul>



<h3 class="wp-block-heading"><span id="toc7">OneNoteの弱点</span></h3>



<ul class="wp-block-list"><li><strong>起動・ページ作成がやや重い</strong>: Keepのような「思いついて30秒で書く」用途にはオーバースペックです</li><li><strong>同期速度がKeepほど速くない</strong>: 複数端末で編集すると同期エラーが発生することがあります</li><li><strong>「個人用」と「組織アカウント」の使い分けに注意</strong>: 業務利用なら必ず組織アカウントの OneNote を使ってください</li><li><strong>アプリの系統が分かりづらい</strong>: 「OneNote for Windows 10」と Microsoft 365 版の OneNote が混在していた時期があり、戸惑うことがあります（現在は Microsoft 365 版に統合される方向）</li></ul>



<p>「腰を据えて情報を蓄積する」用途には強いけれど、「軽くサッと書く」用途には少しもたつくのが OneNote の特徴です。</p>



<h2 class="wp-block-heading"><span id="toc8">業務シーン別 ベスト選択表｜事務職の6シーンで比較</span></h2>



<p>ここからは事務職の実務シーンに落として、6つの場面でどちらが向くかを判定します。○△×で見てくださいね。</p>



<figure class="wp-block-table"><table><thead><tr><th>業務シーン</th><th>Google Keep</th><th>OneNote</th><th>おすすめ理由</th></tr></thead><tbody><tr><td>朝の当日TODOチェックリスト</td><td>◎</td><td>△</td><td>Keepはチェックリスト化が一瞬。日々の習慣にしやすい</td></tr><tr><td>短い電話メモ（30秒で書いて保存）</td><td>◎</td><td>△</td><td>起動・同期速度ともにKeepが圧勝</td></tr><tr><td>議事録（30分〜1時間の会議）</td><td>△</td><td>◎</td><td>OneNoteの階層と長文対応が有利</td></tr><tr><td>経費精算のレシートメモ（写真付き）</td><td>◎</td><td>○</td><td>スマホで写真→即PCで参照する流れがKeepはスムーズ</td></tr><tr><td>案件引き継ぎナレッジ（添付ファイルあり）</td><td>×</td><td>◎</td><td>ファイル添付不可のKeepでは厳しい</td></tr><tr><td>プロジェクト全体の情報集約</td><td>×</td><td>◎</td><td>ノートブック階層で大規模整理が可能</td></tr></tbody></table></figure>



<p>ざっくりまとめると、<strong>「軽いメモはKeep、ためこむナレッジはOneNote」</strong> という棲み分けが事務職の現実的な使い分けですね。</p>



<h2 class="wp-block-heading"><span id="toc9">失敗しない選び方フローチャート｜3つの質問で決まる</span></h2>



<p>「どっちを使うか」を3つの質問で決めるフローチャートを用意しました。順番に答えてみてください。</p>



<p><strong>質問1: 職場の標準ツールはどちら？</strong></p>



<ul class="wp-block-list"><li>Microsoft 365が中心 → <strong>OneNote候補</strong> に進む</li><li>Google Workspaceが中心 → <strong>Google Keep候補</strong> に進む</li><li>両方使う環境 → 質問2へ</li></ul>



<p><strong>質問2: 主に書きたいのはどんなメモ？</strong></p>



<ul class="wp-block-list"><li>短い気づき・チェックリスト・電話メモ中心 → <strong>Google Keep</strong></li><li>議事録・添付資料込みの長い記録中心 → <strong>OneNote</strong></li></ul>



<p><strong>質問3: スマホで書いてすぐPCで見ることが多い？</strong></p>



<ul class="wp-block-list"><li>とても多い（外出が多い職種） → <strong>Google Keep</strong>（同期速度が速い）</li><li>それほど多くない（席メイン） → どちらでも可</li></ul>



<p>この3問だけで、自分に合うアプリが決まりますよ。「迷ったらKeep、情報を貯め込みたいならOneNote」という大原則も覚えておいてください。</p>



<h2 class="wp-block-heading"><span id="toc10">両方併用するという選択肢｜実は事務職の現実解</span></h2>



<p>実は、事務職の現場では <strong>「両方を併用する」</strong> のがベストアンサーになるケースがけっこうあります。1つに絞らず役割で使い分けると、それぞれの強みだけを取り出せるんですよね。</p>



<p>おすすめの併用パターンはこんな感じです。</p>



<ul class="wp-block-list"><li><strong>Google Keep</strong>: 当日のTODOリスト、電話メモ、思いつきメモ、買い物リストなど「短くて軽いもの」専用</li><li><strong>OneNote</strong>: 議事録、案件ナレッジ、引き継ぎ資料、プロジェクト管理ノートなど「長くて整理が必要なもの」専用</li></ul>



<p>Keepに書いた重要メモのうち「これは保存版」となったものを、OneNoteの該当ページに転記する流れにします。こうすると「メモが散らばらない」「すぐ書ける」が両立しますよ。</p>



<p>費用面も、Google Keepは完全無料、OneNoteはMicrosoft 365や無料版でカバーできるので、追加コストなしで両方使える点も併用しやすいポイントです。</p>



<h2 class="wp-block-heading"><span id="toc11">移行・乗り換え時の注意点</span></h2>



<p>「今は片方を使っているけど、もう片方に移行したい」という方向けの注意点をまとめます。</p>



<ul class="wp-block-list"><li><strong>Google Keep → OneNote</strong>: Keep単体のエクスポートは Google Takeout から .html 形式で取り出せます。ただしOneNoteへの自動インポートツールは存在しないので、重要メモのみ手動でコピペが現実解です</li><li><strong>OneNote → Google Keep</strong>: ページごとの一括移行は非推奨。Keepの容量・添付制約に引っかかります。「短くまとめ直して残したいメモだけ」転記する形が安全です</li><li><strong>共有設定の引き継ぎ</strong>: Keepの共同編集者とOneNoteのリンク共有は仕組みが違います。乗り換え後は権限を必ず再設定してください</li><li><strong>ラベル・タグの構造</strong>: KeepのラベルとOneNoteのセクション/ページ構造は1対1で対応しないので、移行のタイミングで整理し直すのがおすすめです</li></ul>



<p>「全部移行する」より「両方併用しながら少しずつ移し替える」のがストレスが少ないですよ。</p>



<h2 class="wp-block-heading"><span id="toc12">まとめ｜あなたに合うメモアプリはこれ</span></h2>



<p>Google KeepとOneNoteの違いを、事務職の業務シーンに落として比較してきました。最後にもう一度ポイントを整理します。</p>



<ul class="wp-block-list"><li><strong>Google Keep</strong> は「軽くて速い、短いメモ」に強い。起動・同期が速く、Google Workspaceと相性抜群</li><li><strong>OneNote</strong> は「長くて整理が必要な情報」に強い。ノートブック階層・添付ファイル・手書き対応で Microsoft 365と一体化</li><li>6つの業務シーン別では「TODO・電話メモ・経費レシート」はKeep、「議事録・引き継ぎ・案件集約」はOneNote</li><li>3つの質問（職場の標準・メモの種類・モバイル度）で自分の選択肢が決まる</li><li>迷うなら <strong>両方併用</strong> が事務職の現実解。短いメモはKeep、長いナレッジはOneNoteと役割分担</li></ul>



<p>まずは今日の業務で、自分の典型的なメモシーンを思い出してみてください。短い箇条書きが多いなら Google Keep、添付資料込みの長文が多いなら OneNote から試すと失敗しませんよ。</p>



<p>Google Keepの活用術をもっと知りたい方は <a href="https://mashukabu.com/google-keep-guide/">Google Keepの使い方完全ガイド｜事務職が仕事で使える7つの活用術</a> を、Microsoft 365とGoogle Workspaceの使い分けが気になる方は <a href="https://mashukabu.com/excel-vs-spreadsheet/">ExcelとGoogleスプレッドシートの違い｜どっちを選ぶべきか徹底比較</a> もあわせてどうぞ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/google-keep-vs-onenote/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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 と組み合わせて省略可能引数を作る方法、ISBLANK との違い、対応バージョンや #CALC! エラーの原因まで実務目線で解説します。]]></description>
										<content:encoded><![CDATA[
<p>「ExcelのISOMITTED関数って何ができるの？」「LAMBDAで作った自作関数の引数を省略できるようにしたい」。そんな疑問はありませんか？</p>



<p>ISOMITTED関数（読み方：イズオミッティッド）は、LAMBDA関数の引数が省略されたかを判定する関数です。関数名は「IS（〜である）+ OMITTED（省略された）」に由来します。IFと組み合わせれば、引数を省略したときに既定値を返す「省略可能引数つきカスタム関数」をVBAなしで作れます。</p>



<p>この記事では、ISOMITTED関数の基本構文と使い方を解説します。LAMBDA + IF を使った省略引数の実装、複数引数の省略チェック、名前付き関数としての保存、ISBLANK関数との違い、対応バージョンやよくあるエラーの対処法までカバーします。</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">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">名前付き関数として保存して再利用する</a><ol><li><a href="#toc14" tabindex="0">保存手順</a></li><li><a href="#toc15" tabindex="0">使い方</a></li><li><a href="#toc16" tabindex="0">注意点</a></li></ol></li><li><a href="#toc17" tabindex="0">ISOMITTED関数とISBLANK関数の違い・使い分け</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関数のよくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">#NAME? エラー</a></li><li><a href="#toc23" tabindex="0">#CALC! エラー</a></li><li><a href="#toc24" tabindex="0">#VALUE! エラー</a></li></ol></li><li><a href="#toc25" tabindex="0">まとめ｜ISOMITTED関数で省略可能引数つきカスタム関数を作る</a></li></ol>
    </div>
  </div>

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



<p>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>ポイントは、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>Excel 2021 以前のバージョンでは使えません。<code>#NAME?</code> エラーになります。LAMBDA関数自体が Microsoft 365 と Excel 2024 で導入された機能です。ISOMITTEDもそれに準じます。</p>



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



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



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



<p>税込価格を計算する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>第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>第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>このように、引数の省略可否をISOMITTEDで判定し、IFで既定値と明示値を切り替えるのが基本パターンです。</p>



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



<p>複数の引数をそれぞれ独立して省略可能にすることもできます。各引数ごとに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>第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>第3引数だけ <code>-</code> を指定します。結果は <code>Excel-関数</code> になります。第4引数は省略のままなので、接頭辞は付きません。</p>



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



<p>LET関数で中間変数（<code>s</code>, <code>p</code>）を定義することで、IFの分岐結果を一度だけ計算して再利用できます。可読性も上がるため、LAMBDA + ISOMITTEDの組み合わせではLETを併用するのが定石です。</p>



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



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



<h3 class="wp-block-heading"><span id="toc14">保存手順</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="toc15">使い方</span></h3>



<p>保存後は、ワークブック全体で次のように使えます。</p>



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



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



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



<ul class="wp-block-list"><li>名前付き関数はワークブック単位で保存されます。別ファイルでは使えません</li><li>共有する場合はテンプレートとして配布するか、相手にも同じ名前付き関数を作成してもらう必要があります</li></ul>



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



<p>ISOMITTEDと似た判定をする関数にISBLANKがあります。役割がまったく異なるため、混同しないよう整理しておきます。</p>



<h3 class="wp-block-heading"><span id="toc18">機能の比較</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="toc19">動作の違い（具体例）</span></h3>



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



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



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



<p>一方、ISBLANKで同じ判定をすると次のようになります。</p>



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



<p>A1 が空白なら ISBLANKは <code>TRUE</code>（空セル）を返します。</p>



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



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



<p>両方を組み合わせて「省略 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="toc21">ISOMITTED関数のよくあるエラーと対処法</span></h2>



<p>ISOMITTEDでエラーが出やすいケースと対処法をまとめます。</p>



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



<p><strong>原因</strong>: ExcelのバージョンがISOMITTEDに対応していない</p>



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



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



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



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



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



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



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



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



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



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



<p>第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="toc25">まとめ｜ISOMITTED関数で省略可能引数つきカスタム関数を作る</span></h2>



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



<p>ポイントを整理します。</p>



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



<p>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のWRAPCOLS関数の使い方｜1列を指定列数の配列に折り返す</title>
		<link>https://mashukabu.com/excel-wrapcols-function/</link>
					<comments>https://mashukabu.com/excel-wrapcols-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 16:09:16 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel中級]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[WRAPCOLS関数]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[動的配列]]></category>
		<category><![CDATA[配列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5924</guid>

					<description><![CDATA[ExcelのWRAPCOLS関数の使い方を丁寧に解説。1列データを指定列数の配列に折り返す構文・引数・WRAPROWS使い分け・エラー対処を実務例付きで紹介。Microsoft 365専用。]]></description>
										<content:encoded><![CDATA[
<p>「1列のリストを、3列に並べ直したい」──そんな場面、ありませんか？</p>



<p>商品リストをカタログ形式に整形するとき、手作業でコピペすると時間がかかります。<br>更新のたびに並べ直すのも、地味に手間ですよね。</p>



<p>ExcelのWRAPCOLS関数を使えば、この作業を数式1つで自動化できます。<br>データが増えても更新不要で、常に最新の状態を保てますよ。</p>



<p>この記事では、WRAPCOLS関数の構文・引数・使い方から、実務ユースケース・エラー対処まで解説します。</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">WRAPCOLS関数とは？Excelでのバージョン確認</a><ol><li><a href="#toc2" tabindex="0">Microsoft 365 / Excel 2024以降のみ使用可能</a></li><li><a href="#toc3" tabindex="0">Excel 2021以前では代替方法が必要</a></li></ol></li><li><a href="#toc4" tabindex="0">WRAPCOLS関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の詳細</a></li><li><a href="#toc7" tabindex="0">第1引数 vector（必須）：折り返す元データ</a></li><li><a href="#toc8" tabindex="0">第2引数 wrap_count（必須）：各列の行数を指定</a></li><li><a href="#toc9" tabindex="0">第3引数 pad_with（省略可）：端数セルの埋め方</a></li></ol></li><li><a href="#toc10" tabindex="0">基本的な使い方：1列データを複数列に折り返す</a><ol><li><a href="#toc11" tabindex="0">縦1列リストを3列配列に変換する例</a></li><li><a href="#toc12" tabindex="0">端数が出る場合（pad_withの活用）</a></li><li><a href="#toc13" tabindex="0">横1行データを折り返す場合</a></li></ol></li><li><a href="#toc14" tabindex="0">WRAPROWS関数との違いと使い分け</a><ol><li><a href="#toc15" tabindex="0">折り返し方向の違い（列 vs 行）</a></li><li><a href="#toc16" tabindex="0">結果の形状と典型用途の比較表</a></li></ol></li><li><a href="#toc17" tabindex="0">実務ユースケース3選</a><ol><li><a href="#toc18" tabindex="0">ユースケース①：商品リストを3列カタログ形式に自動整形</a></li><li><a href="#toc19" tabindex="0">ユースケース②：日次データを週単位（4列）に折り返す</a></li><li><a href="#toc20" tabindex="0">ユースケース③：SEQUENCE+WRAPCOLSで連番グリッドを自動生成</a></li></ol></li><li><a href="#toc21" tabindex="0">TOCOL関数と組み合わせた応用テクニック</a><ol><li><a href="#toc22" tabindex="0">2次元データを1次元化してWRAPCOLSで再配置するレシピ</a></li></ol></li><li><a href="#toc23" tabindex="0">エラーの原因と対処法まとめ</a><ol><li><a href="#toc24" tabindex="0">#N/A エラー：端数が出る場合の対処</a></li><li><a href="#toc25" tabindex="0">#VALUE! エラー：2次元配列を渡した場合</a></li><li><a href="#toc26" tabindex="0">#NUM! エラー：wrap_countの値が不正</a></li><li><a href="#toc27" tabindex="0">#REF! エラー：スピル先に値が入っている</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ：WRAPCOLS関数でリスト整形を自動化しよう</a><ol><li><a href="#toc29" tabindex="0">関連関数</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WRAPCOLS関数とは？Excelでのバージョン確認</span></h2>



<p>WRAPCOLS関数は、1次元の配列を「列方向に折り返す」関数です。<br>縦1列や横1行のデータを、指定した列数の2次元配列に変換できます。</p>



<p>読み方は「ラップコルズ」です。<br>&#8220;WRAP&#8221;（折り返す）と &#8220;COLS&#8221;（列、複数形）を組み合わせた名前です。</p>



<p>たとえば、A列に12個のデータがあるとします。<br><code>=WRAPCOLS(A1:A12, 4)</code> と入力すると、4行×3列の配列が自動生成されます。<br>元のリストを更新すると、出力も自動で再整形されますよ。</p>



<h3 class="wp-block-heading"><span id="toc2">Microsoft 365 / Excel 2024以降のみ使用可能</span></h3>



<p>WRAPCOLS関数は、以下の環境でのみ動作します。</p>



<figure class="wp-block-table"><table><thead><tr><th>環境</th><th>対応</th></tr></thead><tbody><tr><td>Microsoft 365（Windows / Mac / Web）</td><td>○</td></tr><tr><td>Excel 2024（Windows / Mac）</td><td>○</td></tr><tr><td>Excel 2021</td><td>×</td></tr><tr><td>Excel 2019 / 2016</td><td>×</td></tr></tbody></table></figure>



<p>スピル（数式の結果が複数セルに自動展開される機能）に対応した環境が必要です。<br>バージョンが古い場合は使えませんので、事前に確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc3">Excel 2021以前では代替方法が必要</span></h3>



<p>Excel 2021以前では、WRAPCOLS関数は使えません。<br>INDEX関数やOFFSET関数の組み合わせで同様の処理は可能です。<br>ただし数式が複雑になるため、可能ならMicrosoft 365への移行を検討してみてください。</p>



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



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



<pre class="wp-block-code"><code>=WRAPCOLS(vector, wrap_count, [pad_with])</code></pre>



<p>引数は3つで、3つ目のみ省略できます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>vector</td><td>必須</td><td>折り返す元の1次元配列またはセル参照</td></tr><tr><td>wrap_count</td><td>必須</td><td>各列の最大行数（1以上の整数）</td></tr><tr><td>pad_with</td><td>省略可</td><td>端数セルに入れる値。省略時は #N/A</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc7">第1引数 vector（必須）：折り返す元データ</span></h3>



<p>vectorには、1次元の配列またはセル参照を指定します。<br>A1:A12のような縦1列でも、A1:L1のような横1行でも使えます。</p>



<p>注意点があります。<br>A1:C5のような複数行×複数列の2次元範囲を渡すと、#VALUE! エラーになります。<br>vectorは必ず1次元（1行または1列）で指定してください。</p>



<p>2次元データを渡したい場合はTOCOL関数（2次元配列を縦1列に変換する関数）と組み合わせます。<br>この活用法は後述の「TOCOL関数との組み合わせ」で解説します。</p>



<h3 class="wp-block-heading"><span id="toc8">第2引数 wrap_count（必須）：各列の行数を指定</span></h3>



<p>wrap_countには、各列に何行分のデータを並べるかを指定します。</p>



<p>たとえば wrap_count=4 なら、各列に4行分のデータが入ります。<br>12個のデータなら 12÷4=3 なので、4行×3列の配列になります。</p>



<p>0以下の値を指定すると #NUM! エラーになります。<br>必ず1以上の整数を指定してください。</p>



<h3 class="wp-block-heading"><span id="toc9">第3引数 pad_with（省略可）：端数セルの埋め方</span></h3>



<p>データ件数がwrap_countで割り切れない場合、最終列に空きセルが生じます。<br>pad_withには、その空きセルに表示する値を指定できます。</p>



<ul class="wp-block-list"><li>省略した場合：空きセルに #N/A が表示される</li><li><code>""</code> を指定した場合：空白セルになる</li><li><code>0</code> を指定した場合：0で埋まる</li></ul>



<p>端数が出る場面では、<code>pad_with=""</code> を指定するのが見た目にきれいですよ。</p>



<h2 class="wp-block-heading"><span id="toc10">基本的な使い方：1列データを複数列に折り返す</span></h2>



<h3 class="wp-block-heading"><span id="toc11">縦1列リストを3列配列に変換する例</span></h3>



<p>A列に果物名が12個あるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th></tr></thead><tbody><tr><td>りんご</td></tr><tr><td>みかん</td></tr><tr><td>ぶどう</td></tr><tr><td>もも</td></tr><tr><td>なし</td></tr><tr><td>いちご</td></tr><tr><td>すいか</td></tr><tr><td>メロン</td></tr><tr><td>バナナ</td></tr><tr><td>キウイ</td></tr><tr><td>マンゴー</td></tr><tr><td>パイナップル</td></tr></tbody></table></figure>



<p>セルC1に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:A12, 4)</code></pre>



<p>結果は次のような4行×3列の配列になります。</p>



<figure class="wp-block-table"><table><thead><tr><th>列1</th><th>列2</th><th>列3</th></tr></thead><tbody><tr><td>りんご</td><td>なし</td><td>バナナ</td></tr><tr><td>みかん</td><td>いちご</td><td>キウイ</td></tr><tr><td>ぶどう</td><td>すいか</td><td>マンゴー</td></tr><tr><td>もも</td><td>メロン</td><td>パイナップル</td></tr></tbody></table></figure>



<p>データが列の上から順に詰め込まれています。<br>12個がwrap_count=4で割り切れるため、端数は発生しません。</p>



<h3 class="wp-block-heading"><span id="toc12">端数が出る場合（pad_withの活用）</span></h3>



<p>データが13個で、wrap_count=4の場合を見てみましょう。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:A13, 4, &quot;&quot;)</code></pre>



<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>1番目</td><td>5番目</td><td>9番目</td><td>13番目</td></tr><tr><td>2番目</td><td>6番目</td><td>10番目</td><td>（空白）</td></tr><tr><td>3番目</td><td>7番目</td><td>11番目</td><td>（空白）</td></tr><tr><td>4番目</td><td>8番目</td><td>12番目</td><td>（空白）</td></tr></tbody></table></figure>



<p>13÷4は割り切れないため、4列目が1行分だけになります。<br><code>pad_with=""</code> を指定しているので、残り3セルが空白になります。</p>



<p>pad_withを省略した場合、空白の代わりに #N/A が表示されますよ。<br>表示をすっきりさせたい場合は、忘れずに <code>""</code> を指定してみてください。</p>



<h3 class="wp-block-heading"><span id="toc13">横1行データを折り返す場合</span></h3>



<p>WRAPCOLSはA1:L1のような横並びのデータにも使えます。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:L1, 4)</code></pre>



<p>横1行の12個のデータが、4行×3列の配列に変換されます。<br>縦リストを渡したときと結果の形状は同じです。<br>入力データの向きに関わらず、同じように使えるのが便利ですよ。</p>



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



<h3 class="wp-block-heading"><span id="toc15">折り返し方向の違い（列 vs 行）</span></h3>



<p>WRAPCOLS関数と対になる関数に、WRAPROWS（ラップロウズ）があります。<br>構文はほぼ同じです。</p>



<pre class="wp-block-code"><code>=WRAPROWS(vector, wrap_count, [pad_with])</code></pre>



<p>2つの違いは「折り返す方向」だけです。</p>



<ul class="wp-block-list"><li><strong>WRAPCOLS</strong>：列方向（縦）に折り返す → 縦長の配列</li><li><strong>WRAPROWS</strong>：行方向（横）に折り返す → 横長の配列</li></ul>



<p>たとえば <code>{a, b, c, d, e, f}</code> の6要素を、wrap_count=3 で折り返すとします。</p>



<p><strong>WRAPCOLS（各列3行）の結果：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>列1</th><th>列2</th></tr></thead><tbody><tr><td>a</td><td>d</td></tr><tr><td>b</td><td>e</td></tr><tr><td>c</td><td>f</td></tr></tbody></table></figure>



<p><strong>WRAPROWS（各行3列）の結果：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>列1</th><th>列2</th><th>列3</th></tr></thead><tbody><tr><td>a</td><td>b</td><td>c</td></tr><tr><td>d</td><td>e</td><td>f</td></tr></tbody></table></figure>



<p>WRAPCOLSは縦長の配列、WRAPROWSは横長の配列になります。<br>どちらも「折り返す」ことに変わりはありませんが、方向が逆になります。</p>



<h3 class="wp-block-heading"><span id="toc16">結果の形状と典型用途の比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>WRAPCOLS</th><th>WRAPROWS</th></tr></thead><tbody><tr><td>折り返し方向</td><td>列方向（縦に詰める）</td><td>行方向（横に詰める）</td></tr><tr><td>wrap_countの意味</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>「縦に整形したい」ならWRAPCOLS、「横に展開したい」ならWRAPROWSと覚えておくと選びやすいですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">実務ユースケース3選</span></h2>



<h3 class="wp-block-heading"><span id="toc18">ユースケース①：商品リストを3列カタログ形式に自動整形</span></h3>



<p>販売管理システムからエクスポートした商品名が縦1列に並んでいます。<br>これを3列のカタログ形式に整形してみましょう。</p>



<p>A列（A2:A10）に商品名が9個あるとします。<br>セルC1に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A2:A10, 3)</code></pre>



<p><strong>変換前（A列の縦リスト）：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th></tr></thead><tbody><tr><td>商品A</td></tr><tr><td>商品B</td></tr><tr><td>商品C</td></tr><tr><td>商品D</td></tr><tr><td>商品E</td></tr><tr><td>商品F</td></tr><tr><td>商品G</td></tr><tr><td>商品H</td></tr><tr><td>商品I</td></tr></tbody></table></figure>



<p><strong>変換後（3行×3列の配列）：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>列1</th><th>列2</th><th>列3</th></tr></thead><tbody><tr><td>商品A</td><td>商品D</td><td>商品G</td></tr><tr><td>商品B</td><td>商品E</td><td>商品H</td></tr><tr><td>商品C</td><td>商品F</td><td>商品I</td></tr></tbody></table></figure>



<p>9個をwrap_count=3で割ると3列になります。<br>商品が追加・削除されても、A列を更新するだけです。<br>カタログの再整形は数式が自動でやってくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">ユースケース②：日次データを週単位（4列）に折り返す</span></h3>



<p>28日分の日次売上データがD2:D29にあるとします。<br>これを7行×4列（週単位）に折り返すと、週ごとの比較がしやすくなります。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(D2:D29, 7)</code></pre>



<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>1日目</td><td>8日目</td><td>15日目</td><td>22日目</td></tr><tr><td>2日目</td><td>9日目</td><td>16日目</td><td>23日目</td></tr><tr><td>3日目</td><td>10日目</td><td>17日目</td><td>24日目</td></tr><tr><td>4日目</td><td>11日目</td><td>18日目</td><td>25日目</td></tr><tr><td>5日目</td><td>12日目</td><td>19日目</td><td>26日目</td></tr><tr><td>6日目</td><td>13日目</td><td>20日目</td><td>27日目</td></tr><tr><td>7日目</td><td>14日目</td><td>21日目</td><td>28日目</td></tr></tbody></table></figure>



<p>各列が1週間分のデータになります。<br>SUM関数やAVERAGE関数を週ごとに適用するのも簡単になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">ユースケース③：SEQUENCE+WRAPCOLSで連番グリッドを自動生成</span></h3>



<p>SEQUENCE関数（連続した数値を生成する関数）と組み合わせると、連番グリッドが1つの数式で作れます。</p>



<p>たとえば、1〜16の連番を4行×4列のグリッドにするには：</p>



<pre class="wp-block-code"><code>=WRAPCOLS(SEQUENCE(16), 4)</code></pre>



<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>1</td><td>5</td><td>9</td><td>13</td></tr><tr><td>2</td><td>6</td><td>10</td><td>14</td></tr><tr><td>3</td><td>7</td><td>11</td><td>15</td></tr><tr><td>4</td><td>8</td><td>12</td><td>16</td></tr></tbody></table></figure>



<p>SEQUENCE(16) が {1, 2, &#8230;, 16} の連番を生成します。<br>WRAPCOLSがそれを4行ずつの列に変換し、4×4のグリッドになります。<br>座席番号の振り方や番号管理表の自動生成に活用できますよ。</p>



<p>SEQUENCE関数の詳細は <a href="https://biz-tactics.net/excel-function-howto-use-sequence">ExcelのSEQUENCE関数の使い方</a> も参照してみてください。</p>



<h2 class="wp-block-heading"><span id="toc21">TOCOL関数と組み合わせた応用テクニック</span></h2>



<h3 class="wp-block-heading"><span id="toc22">2次元データを1次元化してWRAPCOLSで再配置するレシピ</span></h3>



<p>WRAPCOLSのvectorには1次元配列しか渡せません。<br>しかし実務では、複数列のデータをまとめて再配置したいことがあります。</p>



<p>そこで活用するのがTOCOL関数です。<br>TOCOLは2次元配列を縦1列に変換する関数です。<br>TOCOLとWRAPCOLSを組み合わせることで、柔軟な再配置が可能になります。</p>



<p><strong>例：2列×4行のデータを再配置する</strong></p>



<p>A1:B4に2列×4行（計8セル）のデータがあるとします。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(TOCOL(A1:B4), 4)</code></pre>



<p><strong>処理の流れ：</strong></p>



<p>① <code>TOCOL(A1:B4)</code> → 2次元データを8要素の縦1列に変換<br>② <code>WRAPCOLS(..., 4)</code> → 4行×2列の配列に再配置</p>



<p>2次元データを一度1次元に「ならして」から、好きな列数で再配置できます。<br>「複数列のリストをまとめて並べ替えたい」という場面で特に便利なテクニックです。</p>



<p>TOCOL関数の詳細は <a href="https://biz-tactics.net/excel-function-howto-use-tocol">ExcelのTOCOL関数の使い方</a> で解説しています。<br>TOROW関数（2次元配列を横1行に変換する関数）を使ったパターンは <a href="https://biz-tactics.net/excel-function-howto-use-torow">ExcelのTOROW関数の使い方</a> を参照してみてください。</p>



<h2 class="wp-block-heading"><span id="toc23">エラーの原因と対処法まとめ</span></h2>



<p>WRAPCOLS関数で発生しうるエラーは4種類です。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>pad_withを省略していて端数セルがある</td><td><code>pad_with=""</code> や <code>pad_with=0</code> を指定する</td></tr><tr><td>#VALUE!</td><td>vectorに2次元配列を指定した</td><td>TOCOLで1次元化してからWRAPCOLSに渡す</td></tr><tr><td>#NUM!</td><td>wrap_countに0以下の値を指定した</td><td>1以上の整数を指定する</td></tr><tr><td>#REF!</td><td>スピル先のセルに値が入っている</td><td>出力先の範囲を空にしてから入力し直す</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc24">#N/A エラー：端数が出る場合の対処</span></h3>



<p>データ件数がwrap_countで割り切れないと、最終列の末尾に #N/A が出ます。<br>#N/A（エヌエー）は &#8220;Not Available&#8221;（利用不可）の略で、値がないことを示します。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:A10, 3)  ' 10÷3=3余り1 → 最終列の末尾2セルに#N/A</code></pre>



<p>空白にしたい場合：</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:A10, 3, &quot;&quot;)</code></pre>



<p>0で埋めたい場合：</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:A10, 3, 0)</code></pre>



<p>端数が出る可能性があるときは、最初からpad_withを指定しておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc25">#VALUE! エラー：2次元配列を渡した場合</span></h3>



<p>vectorに2次元範囲（複数行×複数列）を渡すと #VALUE! になります。</p>



<pre class="wp-block-code"><code>' NG: 2次元配列を直接渡す
=WRAPCOLS(A1:C5, 3)  ' → #VALUE!

' OK: TOCOLで1次元化してから渡す
=WRAPCOLS(TOCOL(A1:C5), 3)</code></pre>



<p>vectorに渡しているセル範囲が2次元になっていないか確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc26">#NUM! エラー：wrap_countの値が不正</span></h3>



<p>wrap_countに0以下の値を指定すると #NUM! になります。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(A1:A12, 0)   ' → #NUM!
=WRAPCOLS(A1:A12, -1)  ' → #NUM!</code></pre>



<p>1以上の整数を指定してください。<br>セル参照でwrap_countを指定している場合は、そのセルの値を確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc27">#REF! エラー：スピル先に値が入っている</span></h3>



<p>WRAPCOLS関数はスピルを使って結果を複数セルに展開します。<br>出力先の範囲に他のデータが入っていると、#REF! エラーになります。</p>



<p>出力先となるセル範囲を空にしてから、数式を入力し直してください。<br>スピルに必要な範囲が広い場合は、周囲のデータを別の場所に移動してみてください。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ：WRAPCOLS関数でリスト整形を自動化しよう</span></h2>



<p>この記事の要点を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>ポイント</th><th>内容</th></tr></thead><tbody><tr><td>できること</td><td>1次元リストを列方向に折り返して2次元配列に変換</td></tr><tr><td>構文</td><td>=WRAPCOLS(vector, wrap_count, [pad_with])</td></tr><tr><td>対応環境</td><td>Microsoft 365 / Excel 2024以降のみ</td></tr><tr><td>WRAPROWSとの違い</td><td>縦長配列（WRAPCOLS）vs 横長配列（WRAPROWS）</td></tr><tr><td>主なエラー</td><td>#N/A / #VALUE! / #NUM! / #REF!</td></tr></tbody></table></figure>



<p>WRAPCOLS関数を使えば、手作業で並べ替えていたリストが数式1つで自動化できます。<br>データが増えても更新不要なので、メンテナンスの手間もなくなりますよ。</p>



<p>ぜひ実務で試してみてください。</p>



<h3 class="wp-block-heading"><span id="toc29">関連関数</span></h3>



<p>配列操作の関連記事もあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://biz-tactics.net/excel-function-howto-use-tocol">ExcelのTOCOL関数の使い方</a>（2次元配列を縦1列に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-torow">ExcelのTOROW関数の使い方</a>（2次元配列を横1行に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-sequence">ExcelのSEQUENCE関数の使い方</a>（連番を自動生成）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-hstack">ExcelのHSTACK関数の使い方</a>（配列を横方向に結合）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-vstack">ExcelのVSTACK関数の使い方</a>（配列を縦方向に結合）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-choosecols">ExcelのCHOOSECOLS関数の使い方</a>（指定列を抽出）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-chooserows">ExcelのCHOOSEROWS関数の使い方</a>（指定行を抽出）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-take">ExcelのTAKE関数の使い方</a>（先頭・末尾を抽出）</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-wrapcols-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのWRAPROWS関数の使い方｜1行を指定列数の配列に折り返す</title>
		<link>https://mashukabu.com/excel-wraprows-function/</link>
					<comments>https://mashukabu.com/excel-wraprows-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 16:09:13 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel中級]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[WRAPROWS関数]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[動的配列]]></category>
		<category><![CDATA[配列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5922</guid>

					<description><![CDATA[ExcelのWRAPROWS関数の使い方を丁寧に解説。1次元データを指定列数の配列に行方向で折り返す構文・引数・WRAPCOLS使い分け・エラー対処を実務例付きで紹介。Microsoft 365専用。]]></description>
										<content:encoded><![CDATA[
<p>「データを横並びに整形したい」──そんな場面、ありませんか？</p>



<p>縦1列のリストを、一定の列数で横に並べ直すとき、手作業でコピペすると時間がかかります。<br>更新のたびに並べ直すのも、地味に手間ですよね。</p>



<p>ExcelのWRAPROWS関数を使えば、この作業を数式1つで自動化できます。<br>データが増えても更新不要で、常に最新の状態を保てますよ。</p>



<p>この記事では、WRAPROWS関数の構文・引数・使い方から、実務ユースケース・エラー対処まで解説します。</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">WRAPROWS関数とは？Excelでのバージョン確認</a><ol><li><a href="#toc2" tabindex="0">Microsoft 365 / Excel 2024以降のみ使用可能</a></li><li><a href="#toc3" tabindex="0">Excel 2021以前では代替方法が必要</a></li></ol></li><li><a href="#toc4" tabindex="0">WRAPROWS関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の詳細</a></li><li><a href="#toc7" tabindex="0">第1引数 vector（必須）：折り返す元データ</a></li><li><a href="#toc8" tabindex="0">第2引数 wrap_count（必須）：各行の列数を指定</a></li><li><a href="#toc9" tabindex="0">第3引数 pad_with（省略可）：端数セルの埋め方</a></li></ol></li><li><a href="#toc10" tabindex="0">基本的な使い方：1列データを複数行に折り返す</a><ol><li><a href="#toc11" tabindex="0">縦1列リストを3列配列に変換する例</a></li><li><a href="#toc12" tabindex="0">端数が出る場合（pad_withの活用）</a></li><li><a href="#toc13" tabindex="0">横1行データを折り返す場合</a></li></ol></li><li><a href="#toc14" tabindex="0">WRAPCOLS関数との違いと使い分け</a><ol><li><a href="#toc15" tabindex="0">折り返し方向の違い（行 vs 列）</a></li><li><a href="#toc16" tabindex="0">結果の形状と典型用途の比較表</a></li></ol></li><li><a href="#toc17" tabindex="0">実務ユースケース3選</a><ol><li><a href="#toc18" tabindex="0">ユースケース①：商品リストを4列横並びに自動整形</a></li><li><a href="#toc19" tabindex="0">ユースケース②：月次データを四半期単位（3列）に折り返す</a></li><li><a href="#toc20" tabindex="0">ユースケース③：SEQUENCE+WRAPROWSでカレンダー形式の連番グリッドを生成</a></li></ol></li><li><a href="#toc21" tabindex="0">TOROW関数と組み合わせた応用テクニック</a><ol><li><a href="#toc22" tabindex="0">2次元データを1次元化してWRAPROWSで再配置するレシピ</a></li></ol></li><li><a href="#toc23" tabindex="0">エラーの原因と対処法まとめ</a><ol><li><a href="#toc24" tabindex="0">#N/A エラー：端数が出る場合の対処</a></li><li><a href="#toc25" tabindex="0">#VALUE! エラー：2次元配列を渡した場合</a></li><li><a href="#toc26" tabindex="0">#NUM! エラー：wrap_countの値が不正</a></li><li><a href="#toc27" tabindex="0">#REF! エラー：スピル先に値が入っている</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ：WRAPROWS関数でリスト整形を自動化しよう</a><ol><li><a href="#toc29" tabindex="0">関連関数</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WRAPROWS関数とは？Excelでのバージョン確認</span></h2>



<p>WRAPROWS関数は、1次元の配列を「行方向に折り返す」関数です。<br>縦1列や横1行のデータを、指定した列数ごとに折り返した2次元配列に変換できます。</p>



<p>読み方は「ラップロウズ」です。<br>&#8220;WRAP&#8221;（折り返す）と &#8220;ROWS&#8221;（行、複数形）を組み合わせた名前です。</p>



<p>たとえば、A列に12個のデータがあるとします。<br><code>=WRAPROWS(A1:A12, 4)</code> と入力すると、3行×4列の配列が自動生成されます。<br>元のリストを更新すると、出力も自動で再整形されますよ。</p>



<h3 class="wp-block-heading"><span id="toc2">Microsoft 365 / Excel 2024以降のみ使用可能</span></h3>



<p>WRAPROWS関数は、以下の環境でのみ動作します。</p>



<figure class="wp-block-table"><table><thead><tr><th>環境</th><th>対応</th></tr></thead><tbody><tr><td>Microsoft 365（Windows / Mac / Web）</td><td>○</td></tr><tr><td>Excel 2024（Windows / Mac）</td><td>○</td></tr><tr><td>Excel 2021</td><td>×</td></tr><tr><td>Excel 2019 / 2016</td><td>×</td></tr></tbody></table></figure>



<p>スピル（数式の結果が複数セルに自動展開される機能）に対応した環境が必要です。<br>バージョンが古い場合は使えませんので、事前に確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc3">Excel 2021以前では代替方法が必要</span></h3>



<p>Excel 2021以前では、WRAPROWS関数は使えません。<br>INDEX関数やOFFSET関数の組み合わせで同様の処理は可能です。<br>ただし数式が複雑になるため、可能ならMicrosoft 365への移行を検討してみてください。</p>



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



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



<pre class="wp-block-code"><code>=WRAPROWS(vector, wrap_count, [pad_with])</code></pre>



<p>引数は3つで、3つ目のみ省略できます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>vector</td><td>必須</td><td>折り返す元の1次元配列またはセル参照</td></tr><tr><td>wrap_count</td><td>必須</td><td>各行の最大列数（1以上の整数）</td></tr><tr><td>pad_with</td><td>省略可</td><td>端数セルに入れる値。省略時は #N/A</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc7">第1引数 vector（必須）：折り返す元データ</span></h3>



<p>vectorには、1次元の配列またはセル参照を指定します。<br>A1:A12のような縦1列でも、A1:L1のような横1行でも使えます。</p>



<p>注意点があります。<br>A1:C5のような複数行×複数列の2次元範囲を渡すと、#VALUE! エラーになります。<br>vectorは必ず1次元（1行または1列）で指定してください。</p>



<p>2次元データを渡したい場合はTOROW関数（2次元配列を横1行に変換する関数）と組み合わせます。<br>この活用法は後述の「TOROW関数との組み合わせ」で解説します。</p>



<h3 class="wp-block-heading"><span id="toc8">第2引数 wrap_count（必須）：各行の列数を指定</span></h3>



<p>wrap_countには、各行に何列分のデータを並べるかを指定します。</p>



<p>たとえば wrap_count=4 なら、各行に4列分のデータが入ります。<br>12個のデータなら 12÷4=3 なので、3行×4列の配列になります。</p>



<p>0以下の値を指定すると #NUM! エラーになります。<br>必ず1以上の整数を指定してください。</p>



<h3 class="wp-block-heading"><span id="toc9">第3引数 pad_with（省略可）：端数セルの埋め方</span></h3>



<p>データ件数がwrap_countで割り切れない場合、最終行に空きセルが生じます。<br>pad_withには、その空きセルに表示する値を指定できます。</p>



<ul class="wp-block-list"><li>省略した場合：空きセルに #N/A が表示される</li><li><code>""</code> を指定した場合：空白セルになる</li><li><code>0</code> を指定した場合：0で埋まる</li></ul>



<p>端数が出る場面では、<code>pad_with=""</code> を指定するのが見た目にきれいですよ。</p>



<h2 class="wp-block-heading"><span id="toc10">基本的な使い方：1列データを複数行に折り返す</span></h2>



<h3 class="wp-block-heading"><span id="toc11">縦1列リストを3列配列に変換する例</span></h3>



<p>A列に果物名が12個あるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th></tr></thead><tbody><tr><td>りんご</td></tr><tr><td>みかん</td></tr><tr><td>ぶどう</td></tr><tr><td>もも</td></tr><tr><td>なし</td></tr><tr><td>いちご</td></tr><tr><td>すいか</td></tr><tr><td>メロン</td></tr><tr><td>バナナ</td></tr><tr><td>キウイ</td></tr><tr><td>マンゴー</td></tr><tr><td>パイナップル</td></tr></tbody></table></figure>



<p>セルC1に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:A12, 4)</code></pre>



<p>結果は次のような3行×4列の配列になります。</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>りんご</td><td>みかん</td><td>ぶどう</td><td>もも</td></tr><tr><td>なし</td><td>いちご</td><td>すいか</td><td>メロン</td></tr><tr><td>バナナ</td><td>キウイ</td><td>マンゴー</td><td>パイナップル</td></tr></tbody></table></figure>



<p>データが行の左から順に詰め込まれています。<br>12個がwrap_count=4で割り切れるため、端数は発生しません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>WRAPCOLS関数との違いに注目してください。WRAPCOLS(A1:A12, 4) は4行×3列の「縦長」配列になりますが、WRAPROWS(A1:A12, 4) は3行×4列の「横長」配列になります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc12">端数が出る場合（pad_withの活用）</span></h3>



<p>データが13個で、wrap_count=4の場合を見てみましょう。</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:A13, 4, &quot;&quot;)</code></pre>



<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>1番目</td><td>2番目</td><td>3番目</td><td>4番目</td></tr><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><tr><td>13番目</td><td>（空白）</td><td>（空白）</td><td>（空白）</td></tr></tbody></table></figure>



<p>13÷4は割り切れないため、4行目が1列分だけになります。<br><code>pad_with=""</code> を指定しているので、残り3セルが空白になります。</p>



<p>pad_withを省略した場合、空白の代わりに #N/A が表示されますよ。<br>表示をすっきりさせたい場合は、忘れずに <code>""</code> を指定してみてください。</p>



<h3 class="wp-block-heading"><span id="toc13">横1行データを折り返す場合</span></h3>



<p>WRAPROWSはA1:L1のような横並びのデータにも使えます。</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:L1, 4)</code></pre>



<p>横1行の12個のデータが、3行×4列の配列に変換されます。<br>縦リストを渡したときと結果の形状は同じです。<br>入力データの向きに関わらず、同じように使えるのが便利ですよ。</p>



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



<h3 class="wp-block-heading"><span id="toc15">折り返し方向の違い（行 vs 列）</span></h3>



<p>WRAPROWSと対になる関数に、WRAPCOLS（ラップコルズ）があります。<br>構文はまったく同じです。</p>



<pre class="wp-block-code"><code>=WRAPCOLS(vector, wrap_count, [pad_with])</code></pre>



<p>2つの違いは「折り返す方向」だけです。</p>



<ul class="wp-block-list"><li><strong>WRAPROWS</strong>：行方向（横）に折り返す → 横長の配列（少行・多列）</li><li><strong>WRAPCOLS</strong>：列方向（縦）に折り返す → 縦長の配列（多行・少列）</li></ul>



<p>たとえば <code>{a, b, c, d, e, f}</code> の6要素を、wrap_count=3 で折り返すとします。</p>



<p><strong>WRAPROWS（各行3列）の結果：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>列1</th><th>列2</th><th>列3</th></tr></thead><tbody><tr><td>a</td><td>b</td><td>c</td></tr><tr><td>d</td><td>e</td><td>f</td></tr></tbody></table></figure>



<p><strong>WRAPCOLS（各列3行）の結果：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>列1</th><th>列2</th></tr></thead><tbody><tr><td>a</td><td>d</td></tr><tr><td>b</td><td>e</td></tr><tr><td>c</td><td>f</td></tr></tbody></table></figure>



<p>WRAPROWSは横長の配列、WRAPCOLSは縦長の配列になります。<br>どちらも「折り返す」ことに変わりはありませんが、方向が逆になります。</p>



<h3 class="wp-block-heading"><span id="toc16">結果の形状と典型用途の比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>WRAPROWS</th><th>WRAPCOLS</th></tr></thead><tbody><tr><td>折り返し方向</td><td>行方向（横に詰める）</td><td>列方向（縦に詰める）</td></tr><tr><td>wrap_countの意味</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>「横に並べたい」ならWRAPROWS、「縦に整形したい」ならWRAPCOLSと覚えておくと選びやすいですよ。</p>



<p>WRAPCOLSの使い方は <a href="https://biz-tactics.net/excel-wrapcols-function">ExcelのWRAPCOLS関数の使い方</a> で詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc17">実務ユースケース3選</span></h2>



<h3 class="wp-block-heading"><span id="toc18">ユースケース①：商品リストを4列横並びに自動整形</span></h3>



<p>販売管理システムからエクスポートした商品名が縦1列に並んでいます。<br>これを4列の横並び形式に整形してみましょう。</p>



<p>A列（A2:A12）に商品名が12個あるとします。<br>セルC1に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=WRAPROWS(A2:A12, 4, &quot;&quot;)</code></pre>



<p><strong>変換前（A列の縦リスト）：</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th></tr></thead><tbody><tr><td>商品A</td></tr><tr><td>商品B</td></tr><tr><td>…</td></tr><tr><td>商品L</td></tr></tbody></table></figure>



<p><strong>変換後（3行×4列の配列）：</strong></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>商品A</td><td>商品B</td><td>商品C</td><td>商品D</td></tr><tr><td>商品E</td><td>商品F</td><td>商品G</td><td>商品H</td></tr><tr><td>商品I</td><td>商品J</td><td>商品K</td><td>商品L</td></tr></tbody></table></figure>



<p>商品が追加・削除されても、A列を更新するだけです。<br>横並び表の再整形は数式が自動でやってくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">ユースケース②：月次データを四半期単位（3列）に折り返す</span></h3>



<p>12ヶ月分の月次売上データがD2:D13にあるとします。<br>これを4行×3列（四半期単位）に折り返すと、四半期ごとの比較がしやすくなります。</p>



<pre class="wp-block-code"><code>=WRAPROWS(D2:D13, 3)</code></pre>



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



<p>各行が3ヶ月（四半期）分のデータになります。<br>SUM関数やAVERAGE関数を四半期ごとに適用するのも簡単になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">ユースケース③：SEQUENCE+WRAPROWSでカレンダー形式の連番グリッドを生成</span></h3>



<p>SEQUENCE関数（連続した数値を生成する関数）と組み合わせると、カレンダー形式の番号表が1つの数式で作れます。</p>



<p>たとえば、1〜28の連番を7列（曜日列）×4行（週）のグリッドにするには：</p>



<pre class="wp-block-code"><code>=WRAPROWS(SEQUENCE(28), 7)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td></tr><tr><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td></tr><tr><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td></tr><tr><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td></tr></tbody></table></figure>



<p>SEQUENCE(28) が {1, 2, &#8230;, 28} の連番を生成します。<br>WRAPROWSがそれを7列ずつの行に変換し、カレンダー形式のグリッドになります。<br>日付表の自動生成や座席番号の管理表にも活用できますよ。</p>



<p>SEQUENCE関数の詳細は <a href="https://biz-tactics.net/excel-function-howto-use-sequence">ExcelのSEQUENCE関数の使い方</a> も参照してみてください。</p>



<h2 class="wp-block-heading"><span id="toc21">TOROW関数と組み合わせた応用テクニック</span></h2>



<h3 class="wp-block-heading"><span id="toc22">2次元データを1次元化してWRAPROWSで再配置するレシピ</span></h3>



<p>WRAPROWSのvectorには1次元配列しか渡せません。<br>しかし実務では、複数列のデータをまとめて再配置したいことがあります。</p>



<p>そこで活用するのがTOROW関数です。<br>TOROWは2次元配列を横1行に変換する関数です。<br>TOROWとWRAPROWSを組み合わせることで、柔軟な再配置が可能になります。</p>



<p><strong>例：2列×4行のデータを再配置する</strong></p>



<p>A1:B4に2列×4行（計8セル）のデータがあるとします。</p>



<pre class="wp-block-code"><code>=WRAPROWS(TOROW(A1:B4), 4)</code></pre>



<p><strong>処理の流れ：</strong></p>



<p>① <code>TOROW(A1:B4)</code> → 2次元データを8要素の横1行に変換<br>② <code>WRAPROWS(..., 4)</code> → 2行×4列の配列に再配置</p>



<p>2次元データを一度1次元に「ならして」から、好きな列数で再配置できます。<br>「複数列のリストをまとめて横並べに整形したい」という場面で特に便利なテクニックです。</p>



<p>TOCOL/TOROW関数の詳細は以下の記事もあわせて参照してみてください。</p>



<ul class="wp-block-list"><li><a href="https://biz-tactics.net/excel-function-howto-use-tocol">ExcelのTOCOL関数の使い方</a>（2次元配列を縦1列に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-torow">ExcelのTOROW関数の使い方</a>（2次元配列を横1行に変換）</li></ul>



<h2 class="wp-block-heading"><span id="toc23">エラーの原因と対処法まとめ</span></h2>



<p>WRAPROWS関数で発生しうるエラーは4種類です。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>pad_withを省略していて端数セルがある</td><td><code>pad_with=""</code> や <code>pad_with=0</code> を指定する</td></tr><tr><td>#VALUE!</td><td>vectorに2次元配列を指定した</td><td>TOROWで1次元化してからWRAPROWSに渡す</td></tr><tr><td>#NUM!</td><td>wrap_countに0以下の値を指定した</td><td>1以上の整数を指定する</td></tr><tr><td>#REF!</td><td>スピル先のセルに値が入っている</td><td>出力先の範囲を空にしてから入力し直す</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc24">#N/A エラー：端数が出る場合の対処</span></h3>



<p>データ件数がwrap_countで割り切れないと、最終行の末尾に #N/A が出ます。<br>#N/A（エヌエー）は &#8220;Not Available&#8221;（利用不可）の略で、値がないことを示します。</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:A10, 3)  ' 10÷3=3余り1 → 最終行の末尾2セルに#N/A</code></pre>



<p>空白にしたい場合：</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:A10, 3, &quot;&quot;)</code></pre>



<p>0で埋めたい場合：</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:A10, 3, 0)</code></pre>



<p>端数が出る可能性があるときは、最初からpad_withを指定しておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc25">#VALUE! エラー：2次元配列を渡した場合</span></h3>



<p>vectorに2次元範囲（複数行×複数列）を渡すと #VALUE! になります。</p>



<pre class="wp-block-code"><code>' NG: 2次元配列を直接渡す
=WRAPROWS(A1:C5, 4)  ' → #VALUE!

' OK: TOROWで1次元化してから渡す
=WRAPROWS(TOROW(A1:C5), 4)</code></pre>



<p>vectorに渡しているセル範囲が2次元になっていないか確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc26">#NUM! エラー：wrap_countの値が不正</span></h3>



<p>wrap_countに0以下の値を指定すると #NUM! になります。</p>



<pre class="wp-block-code"><code>=WRAPROWS(A1:A12, 0)   ' → #NUM!
=WRAPROWS(A1:A12, -1)  ' → #NUM!</code></pre>



<p>1以上の整数を指定してください。<br>セル参照でwrap_countを指定している場合は、そのセルの値を確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc27">#REF! エラー：スピル先に値が入っている</span></h3>



<p>WRAPROWS関数はスピルを使って結果を複数セルに展開します。<br>出力先の範囲に他のデータが入っていると、#REF! エラーになります。</p>



<p>出力先となるセル範囲を空にしてから、数式を入力し直してください。<br>スピルに必要な範囲が広い場合は、周囲のデータを別の場所に移動してみてください。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ：WRAPROWS関数でリスト整形を自動化しよう</span></h2>



<p>この記事の要点を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>ポイント</th><th>内容</th></tr></thead><tbody><tr><td>できること</td><td>1次元リストを行方向に折り返して2次元配列に変換</td></tr><tr><td>構文</td><td>=WRAPROWS(vector, wrap_count, [pad_with])</td></tr><tr><td>対応環境</td><td>Microsoft 365 / Excel 2024以降のみ</td></tr><tr><td>WRAPCOLSとの違い</td><td>横長配列（WRAPROWS）vs 縦長配列（WRAPCOLS）</td></tr><tr><td>主なエラー</td><td>#N/A / #VALUE! / #NUM! / #REF!</td></tr></tbody></table></figure>



<p>WRAPROWS関数を使えば、手作業で並べ替えていたリストが数式1つで自動化できます。<br>データが増えても更新不要なので、メンテナンスの手間もなくなりますよ。</p>



<p>ぜひ実務で試してみてください。</p>



<h3 class="wp-block-heading"><span id="toc29">関連関数</span></h3>



<p>配列操作の関連記事もあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://biz-tactics.net/excel-wrapcols-function">ExcelのWRAPCOLS関数の使い方</a>（列方向に折り返す対の関数）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-tocol">ExcelのTOCOL関数の使い方</a>（2次元配列を縦1列に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-torow">ExcelのTOROW関数の使い方</a>（2次元配列を横1行に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-sequence">ExcelのSEQUENCE関数の使い方</a>（連番を自動生成）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-hstack">ExcelのHSTACK関数の使い方</a>（配列を横方向に結合）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-vstack">ExcelのVSTACK関数の使い方</a>（配列を縦方向に結合）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-choosecols">ExcelのCHOOSECOLS関数の使い方</a>（指定列を抽出）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-chooserows">ExcelのCHOOSEROWS関数の使い方</a>（指定行を抽出）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-take">ExcelのTAKE関数の使い方</a>（先頭・末尾を抽出）</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-wraprows-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのTRIMRANGE関数の使い方｜配列の端の空白を除去する</title>
		<link>https://mashukabu.com/excel-trimrange-function/</link>
					<comments>https://mashukabu.com/excel-trimrange-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 16:09:10 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel中級]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[TRIMRANGE関数]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[動的配列]]></category>
		<category><![CDATA[配列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5920</guid>

					<description><![CDATA[ExcelのTRIMRANGE関数の使い方を丁寧に解説。配列・セル範囲の端にある空白行・空白列を除去する構文・引数・実務ユースケース・関連関数を紹介。Microsoft 365専用。]]></description>
										<content:encoded><![CDATA[
<p>「データ範囲の端に空白行・空白列が混じっていて、集計がうまくいかない」──そんな場面、ありませんか？</p>



<p>コピペで持ってきたデータや、フィルターを外したあとに残る余分な空白行は、数式のエラーや集計ミスの原因になります。<br>手作業で削除するのも面倒ですし、データが増えるたびに繰り返す必要がありますよね。</p>



<p>ExcelのTRIMRANGE関数を使えば、配列やセル範囲の端にある空白行・空白列を数式1つで除去できます。<br>データが変わっても自動で更新されるので、メンテナンスの手間がなくなりますよ。</p>



<p>この記事では、TRIMRANGE関数の構文・引数・使い方から、実務ユースケース・関連関数との使い分けまで解説します。</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">TRIMRANGE関数とは？Excelでのバージョン確認</a><ol><li><a href="#toc2" tabindex="0">Microsoft 365 / Excel 2024以降のみ使用可能</a></li><li><a href="#toc3" tabindex="0">Excel 2021以前では代替方法が必要</a></li></ol></li><li><a href="#toc4" tabindex="0">TRIMRANGE関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の詳細</a></li><li><a href="#toc7" tabindex="0">第1引数 array（必須）：空白を除去する対象</a></li><li><a href="#toc8" tabindex="0">第2引数 rows_trim（省略可）：行の除去方向</a></li><li><a href="#toc9" tabindex="0">第3引数 cols_trim（省略可）：列の除去方向</a></li></ol></li><li><a href="#toc10" tabindex="0">基本的な使い方：端の空白を除去する</a><ol><li><a href="#toc11" tabindex="0">上下左右すべての端を除去する例</a></li><li><a href="#toc12" tabindex="0">行方向のみ除去する例</a></li><li><a href="#toc13" tabindex="0">下端のみ除去する例</a></li></ol></li><li><a href="#toc14" tabindex="0">実務ユースケース3選</a><ol><li><a href="#toc15" tabindex="0">ユースケース①：貼り付けデータの余分な空白行をクリーンアップ</a></li><li><a href="#toc16" tabindex="0">ユースケース②：WRAPROWS/WRAPCOLSと組み合わせて整形精度を上げる</a></li><li><a href="#toc17" tabindex="0">ユースケース③：FILTER関数と組み合わせた空白除去</a></li></ol></li><li><a href="#toc18" tabindex="0">関連関数との使い分け</a><ol><li><a href="#toc19" tabindex="0">TRIM関数との違い</a></li><li><a href="#toc20" tabindex="0">FILTER関数との違い</a></li></ol></li><li><a href="#toc21" tabindex="0">エラーの原因と対処法まとめ</a><ol><li><a href="#toc22" tabindex="0">rows_trim / cols_trim の値が不正な場合</a></li><li><a href="#toc23" tabindex="0">スピル先にデータがある場合</a></li></ol></li><li><a href="#toc24" tabindex="0">まとめ：TRIMRANGE関数で配列の端の空白をすっきり除去しよう</a><ol><li><a href="#toc25" tabindex="0">関連関数</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">TRIMRANGE関数とは？Excelでのバージョン確認</span></h2>



<p>TRIMRANGE関数は、配列またはセル範囲の「端にある空白行・空白列」を除去した配列を返す関数です。<br>「端」というのは配列の上端・下端・左端・右端のことで、中間にある空白は除去されません。</p>



<p>読み方は「トリムレンジ」です。<br>&#8220;TRIM&#8221;（切り取る・除去する）と &#8220;RANGE&#8221;（範囲）を組み合わせた名前です。</p>



<p>たとえば、A1:C6の範囲に6行のデータがあるけれど、1行目と6行目が空白だとします。<br><code>=TRIMRANGE(A1:C6)</code> と入力すると、空白の1行目と6行目を除いたA2:C5相当の配列が返されます。<br>元の範囲に空白が増減しても、数式が自動で調整してくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc2">Microsoft 365 / Excel 2024以降のみ使用可能</span></h3>



<p>TRIMRANGE関数は、以下の環境でのみ動作します。</p>



<figure class="wp-block-table"><table><thead><tr><th>環境</th><th>対応</th></tr></thead><tbody><tr><td>Microsoft 365（Windows / Mac / Web）</td><td>○</td></tr><tr><td>Excel 2024（Windows / Mac）</td><td>○</td></tr><tr><td>Excel 2021</td><td>×</td></tr><tr><td>Excel 2019 / 2016</td><td>×</td></tr></tbody></table></figure>



<p>スピル（数式の結果が複数セルに自動展開される機能）に対応した環境が必要です。<br>バージョンが古い場合は使えませんので、事前に確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc3">Excel 2021以前では代替方法が必要</span></h3>



<p>Excel 2021以前では、TRIMRANGE関数は使えません。<br>FILTER関数（Excel 2019以前では使用不可）やOFFSET+COUNTAの組み合わせで同様の処理が可能です。<br>ただし数式が複雑になるため、可能ならMicrosoft 365への移行を検討してみてください。</p>



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



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



<pre class="wp-block-code"><code>=TRIMRANGE(array, [rows_trim], [cols_trim])</code></pre>



<p>引数は3つで、2番目と3番目は省略できます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>array</td><td>必須</td><td>空白を除去する配列またはセル参照</td></tr><tr><td>rows_trim</td><td>省略可</td><td>行方向の除去方法。0〜3で指定（デフォルト: 3）</td></tr><tr><td>cols_trim</td><td>省略可</td><td>列方向の除去方法。0〜3で指定（デフォルト: 3）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc7">第1引数 array（必須）：空白を除去する対象</span></h3>



<p>arrayには、空白を除去したい配列やセル範囲を指定します。<br>1次元配列（1行または1列）でも、2次元配列（複数行×複数列）でも使えます。</p>



<h3 class="wp-block-heading"><span id="toc8">第2引数 rows_trim（省略可）：行の除去方向</span></h3>



<p>rows_trimには、行方向でどの端の空白を除去するかを指定します。</p>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>動作</th></tr></thead><tbody><tr><td>0</td><td>行方向の空白を除去しない</td></tr><tr><td>1</td><td>先頭（上端）の空白行のみ除去</td></tr><tr><td>2</td><td>末尾（下端）の空白行のみ除去</td></tr><tr><td>3</td><td>先頭と末尾の両方の空白行を除去（デフォルト）</td></tr></tbody></table></figure>



<p>省略した場合は 3（両端を除去）になります。</p>



<h3 class="wp-block-heading"><span id="toc9">第3引数 cols_trim（省略可）：列の除去方向</span></h3>



<p>cols_trimには、列方向でどの端の空白を除去するかを指定します。</p>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>動作</th></tr></thead><tbody><tr><td>0</td><td>列方向の空白を除去しない</td></tr><tr><td>1</td><td>先頭（左端）の空白列のみ除去</td></tr><tr><td>2</td><td>末尾（右端）の空白列のみ除去</td></tr><tr><td>3</td><td>先頭と末尾の両方の空白列を除去（デフォルト）</td></tr></tbody></table></figure>



<p>省略した場合は 3（両端を除去）になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>rows_trimとcols_trimを両方省略すると、<code>=TRIMRANGE(array)</code> という最もシンプルな形になります。この場合、上下左右の端の空白行・空白列がすべて除去されます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc10">基本的な使い方：端の空白を除去する</span></h2>



<h3 class="wp-block-heading"><span id="toc11">上下左右すべての端を除去する例</span></h3>



<p>A1:C6の範囲に以下のようなデータがあるとします。<br>1行目と6行目が空白行、A列がすべて空白列です。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列</th><th>B列</th><th>C列</th></tr></thead><tbody><tr><td>1行</td><td>（空白）</td><td>（空白）</td><td>（空白）</td></tr><tr><td>2行</td><td>（空白）</td><td>商品名</td><td>価格</td></tr><tr><td>3行</td><td>（空白）</td><td>りんご</td><td>150</td></tr><tr><td>4行</td><td>（空白）</td><td>みかん</td><td>80</td></tr><tr><td>5行</td><td>（空白）</td><td>ぶどう</td><td>300</td></tr><tr><td>6行</td><td>（空白）</td><td>（空白）</td><td>（空白）</td></tr></tbody></table></figure>



<p>セルE1に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=TRIMRANGE(A1:C6)</code></pre>



<p>結果として、空白の1行目・6行目・A列が除去され、B2:C5相当のデータが返されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>商品名</th><th>価格</th></tr></thead><tbody><tr><td>りんご</td><td>150</td></tr><tr><td>みかん</td><td>80</td></tr><tr><td>ぶどう</td><td>300</td></tr></tbody></table></figure>



<p>元のA1:C6の空白が変わっても、TRIMRANGE関数が自動で調整してくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">行方向のみ除去する例</span></h3>



<p>列方向の空白は除去せず、行方向だけ除去したい場合は cols_trim=0 を指定します。</p>



<pre class="wp-block-code"><code>=TRIMRANGE(A1:C6, 3, 0)</code></pre>



<p>上下の空白行が除去されますが、左端の空白列（A列）は残ります。</p>



<h3 class="wp-block-heading"><span id="toc13">下端のみ除去する例</span></h3>



<p>追記形式のログデータで、下端に余分な空白行が積みあがっている場合などは rows_trim=2 が便利です。</p>



<pre class="wp-block-code"><code>=TRIMRANGE(A1:C100, 2, 0)</code></pre>



<p>A1:C100の範囲のうち、下端の空白行のみ除去します。<br>上端やA〜C列の方向は変更しません。</p>



<h2 class="wp-block-heading"><span id="toc14">実務ユースケース3選</span></h2>



<h3 class="wp-block-heading"><span id="toc15">ユースケース①：貼り付けデータの余分な空白行をクリーンアップ</span></h3>



<p>社外システムからコピペしたデータの先頭や末尾に、余分な空白行が入ってしまうことがあります。</p>



<p>A1:D50の範囲に貼り付けたデータがあり、先頭3行と末尾5行が空白だとします。</p>



<pre class="wp-block-code"><code>=TRIMRANGE(A1:D50)</code></pre>



<p>空白行が自動で除去されたクリーンなデータが返されます。<br>この数式をSUM・COUNT・AVERAGE等と組み合わせることで、余分な空白を気にせず集計できます。</p>



<h3 class="wp-block-heading"><span id="toc16">ユースケース②：WRAPROWS/WRAPCOLSと組み合わせて整形精度を上げる</span></h3>



<p>データの端に空白がある状態でWRAPROWSやWRAPCOLSを使うと、空白行・列も折り返し対象に含まれてしまいます。<br>先にTRIMRANGEで空白を除去しておくと、折り返し後の配列がきれいになります。</p>



<pre class="wp-block-code"><code>=WRAPROWS(TRIMRANGE(A1:A20), 4, &quot;&quot;)</code></pre>



<p>A1:A20のうち、先頭・末尾の空白を除去してから4列で折り返します。</p>



<p>WRAPROWSの詳細は <a href="https://biz-tactics.net/excel-wraprows-function">ExcelのWRAPROWS関数の使い方</a> を参照してみてください。<br>WRAPCOLSの詳細は <a href="https://biz-tactics.net/excel-wrapcols-function">ExcelのWRAPCOLS関数の使い方</a> を参照してみてください。</p>



<h3 class="wp-block-heading"><span id="toc17">ユースケース③：FILTER関数と組み合わせた空白除去</span></h3>



<p>FILTER関数で条件抽出したあと、結果の先頭・末尾に空白行が残ることがあります。<br>TRIMRANGEでラップすると、抽出結果の空白を除去できます。</p>



<pre class="wp-block-code"><code>=TRIMRANGE(FILTER(A2:C20, B2:B20=&quot;東京&quot;))</code></pre>



<p>B列が「東京」の行を抽出し、結果の端の空白を除去します。<br>データが変わっても数式が自動で調整されますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc19">TRIM関数との違い</span></h3>



<p>「TRIM」という名前の関数は別にも存在します。混同しないようにしておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>対象</th><th>動作</th></tr></thead><tbody><tr><td>TRIM（テキスト関数）</td><td>文字列</td><td>文字列の先頭・末尾・連続スペースを除去</td></tr><tr><td>TRIMRANGE</td><td>配列・セル範囲</td><td>配列の端にある空白行・空白列を除去</td></tr></tbody></table></figure>



<p>TRIM関数は文字列のスペースを除去する関数で、配列の構造には影響しません。<br>TRIMRANGE関数は配列の行・列の端を整形する関数で、文字列のスペースには影響しません。</p>



<h3 class="wp-block-heading"><span id="toc20">FILTER関数との違い</span></h3>



<p>FILTERは条件に一致する行だけを抽出し、TRIMRANGEは端の空白行・列を除去します。</p>



<p>「中間の空白行も除去したい」という場合は、TRIMRANGEではなくFILTER関数を使います。</p>



<pre class="wp-block-code"><code>' 空でない行だけを抽出（中間の空白行も含めて除去）
=FILTER(A1:C20, A1:A20&lt;&gt;&quot;&quot;)</code></pre>



<p>端だけでなく全体から空白行を取り除きたい場合はFILTER関数の出番です。</p>



<h2 class="wp-block-heading"><span id="toc21">エラーの原因と対処法まとめ</span></h2>



<p>TRIMRANGE関数で発生しうるエラーは以下の通りです。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>rows_trim/cols_trimに0〜3以外の値を指定した</td><td>0〜3の整数を指定する</td></tr><tr><td>#REF!</td><td>スピル先のセルに値が入っている</td><td>出力先の範囲を空にしてから入力し直す</td></tr><tr><td>全行・全列が除去される</td><td>対象範囲が全て空白</td><td>対象範囲にデータが入っているか確認する</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc22">rows_trim / cols_trim の値が不正な場合</span></h3>



<p>rows_trimやcols_trimに0〜3以外の値（例: 4や-1）を指定すると #VALUE! になります。</p>



<pre class="wp-block-code"><code>=TRIMRANGE(A1:C6, 4, 0)  ' → #VALUE!（rows_trimは0〜3のみ）</code></pre>



<p>0・1・2・3のいずれかを指定してください。</p>



<h3 class="wp-block-heading"><span id="toc23">スピル先にデータがある場合</span></h3>



<p>TRIMRANGE関数はスピルを使って結果を複数セルに展開します。<br>出力先の範囲に他のデータが入っていると、#REF! エラーになります。</p>



<p>出力先となるセル範囲を空にしてから、数式を入力し直してください。</p>



<h2 class="wp-block-heading"><span id="toc24">まとめ：TRIMRANGE関数で配列の端の空白をすっきり除去しよう</span></h2>



<p>この記事の要点を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>ポイント</th><th>内容</th></tr></thead><tbody><tr><td>できること</td><td>配列・セル範囲の端にある空白行・空白列を除去</td></tr><tr><td>構文</td><td>=TRIMRANGE(array, [rows_trim], [cols_trim])</td></tr><tr><td>対応環境</td><td>Microsoft 365 / Excel 2024以降のみ</td></tr><tr><td>rows_trim / cols_trim</td><td>0=除去なし / 1=先頭のみ / 2=末尾のみ / 3=両端（デフォルト）</td></tr><tr><td>TRIM関数との違い</td><td>TRIMは文字列のスペース除去、TRIMRANGEは配列の端の行・列除去</td></tr></tbody></table></figure>



<p>TRIMRANGE関数を使えば、コピペデータの余分な空白行・列を数式1つで自動除去できます。<br>WRAPROWS・WRAPCOLS・FILTERなど他の配列関数と組み合わせると、さらに強力なデータ整形が可能になりますよ。</p>



<p>ぜひ実務で試してみてください。</p>



<h3 class="wp-block-heading"><span id="toc25">関連関数</span></h3>



<p>配列操作の関連記事もあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://biz-tactics.net/excel-wraprows-function">ExcelのWRAPROWS関数の使い方</a>（1次元配列を行方向に折り返す）</li><li><a href="https://biz-tactics.net/excel-wrapcols-function">ExcelのWRAPCOLS関数の使い方</a>（1次元配列を列方向に折り返す）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-tocol">ExcelのTOCOL関数の使い方</a>（2次元配列を縦1列に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-torow">ExcelのTOROW関数の使い方</a>（2次元配列を横1行に変換）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-sequence">ExcelのSEQUENCE関数の使い方</a>（連番を自動生成）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-hstack">ExcelのHSTACK関数の使い方</a>（配列を横方向に結合）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-vstack">ExcelのVSTACK関数の使い方</a>（配列を縦方向に結合）</li><li><a href="https://biz-tactics.net/excel-function-howto-use-take">ExcelのTAKE関数の使い方</a>（先頭・末尾を抽出）</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-trimrange-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのMAKEARRAY関数の使い方｜配列を自由に生成</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[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関数の使い方を中級者向けに解説。構文・引数の意味から九九表や連番配列などの実務パターン、SEQUENCE関数との違い・使い分け、LAMBDAヘルパー関数の比較表まで紹介します。Microsoft 365対応。]]></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-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">ExcelのMAKEARRAY関数とは？</a></li><li><a href="#toc2" tabindex="0">MAKEARRAY関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li><li><a href="#toc5" tabindex="0">行番号(r)・列番号(c)の動き方</a></li></ol></li><li><a href="#toc6" tabindex="0">MAKEARRAY関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">定数で埋めた配列を作る</a></li><li><a href="#toc8" tabindex="0">九九表（掛け算表）を作る</a></li></ol></li><li><a href="#toc9" tabindex="0">MAKEARRAY関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: 連番配列を生成する</a></li><li><a href="#toc11" tabindex="0">パターン2: 条件付き配列を作る（IF組み合わせ）</a></li><li><a href="#toc12" tabindex="0">パターン3: ランダムデータを生成する</a></li></ol></li><li><a href="#toc13" tabindex="0">SEQUENCE関数との違い・使い分け</a></li><li><a href="#toc14" tabindex="0">LAMBDAヘルパー関数の比較表</a></li><li><a href="#toc15" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc16" tabindex="0">#NAME?エラー</a></li><li><a href="#toc17" tabindex="0">#VALUE!エラー</a></li><li><a href="#toc18" tabindex="0">#CALC!エラー</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p>MAKEARRAY関数は、指定した行数・列数の配列をゼロから生成する関数です。「メイクアレイ」と読みます。名前の由来は「make（作る）+ array（配列）」です。</p>



<p>最大の特徴は、各セルの値を自分で決められることです。<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数</a>の中に計算式を書きます。行番号と列番号に応じた値を自由に設定できます。</p>



<p>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>などの仲間がいます。他のヘルパー関数は既存の配列を加工します。一方、MAKEARRAYだけは「ゼロから配列を作る」役割を担います。</p>



<p>対応環境はMicrosoft 365およびExcel 2021です。Excel 2019以前では使用できません。</p>



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



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



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



<p>3つの引数はすべて必須です。</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>rows</td><td>はい</td><td>生成する配列の行数（1以上の整数）</td></tr><tr><td>cols</td><td>はい</td><td>生成する配列の列数（1以上の整数）</td></tr><tr><td>LAMBDA(r, c, 計算式)</td><td>はい</td><td>各セルの値を決定する関数</td></tr></tbody></table></figure>



<p>LAMBDA内の仮引数は必ず2つ必要です。1つ目に行番号、2つ目に列番号が渡されます。</p>



<h3 class="wp-block-heading"><span id="toc5">行番号(r)・列番号(c)の動き方</span></h3>



<p>行番号・列番号はどちらも1から始まります。たとえば3行2列の配列では、各セルに次のようにrとcが渡されます。</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>このrとcを計算式の中で使うことで、各セルの値を自由に決められます。</p>



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



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



<p>最もシンプルな例は、すべて同じ値で埋めた配列です。次の数式で3行4列のゼロ埋め配列を作れます。</p>



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



<p>rやcを使わず、固定値の0を返しています。テンプレートの初期値を作りたいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc8">九九表（掛け算表）を作る</span></h3>



<p>MAKEARRAY関数の定番パターンが九九表です。行番号と列番号を掛けるだけで完成します。</p>



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



<p>r=3, c=7のセルには「3×7＝21」が入ります。行番号と列番号の組み合わせで値を決められます。これがMAKEARRAYの強みです。</p>



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



<h3 class="wp-block-heading"><span id="toc10">パターン1: 連番配列を生成する</span></h3>



<p>行番号と列番号を組み合わせて連番を作れます。3行4列の連番配列は次のとおりです。</p>



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



<p>1行目には1〜4、2行目には5〜8が入ります。ただし単純な連番なら<a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数</a>のほうがシンプルです。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: 条件付き配列を作る（IF組み合わせ）</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>と組み合わせれば、条件で値を変えられます。たとえば5×5の単位行列は次の数式で生成できます。</p>



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



<p>対角線上（行番号＝列番号）のセルだけが1になります。それ以外は0です。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: ランダムデータを生成する</span></h3>



<p>RANDBETWEEN関数と組み合わせると、テストデータを一括で作れます。</p>



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



<p>10行5列のランダムな整数が生成されます。ダミーデータが必要なときに重宝します。</p>



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



<p>MAKEARRAY関数とSEQUENCE関数は、どちらも配列を生成します。ただし得意分野が異なります。</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><strong>使い分けの目安</strong>はシンプルです。等差数列（1,2,3&#8230;など）ならSEQUENCEを選びます。位置に応じた自由な計算が必要ならMAKEARRAYの出番です。</p>



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



<p>MAKEARRAY関数を含む6つの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>各要素にLAMBDA適用</td><td>同サイズ配列</td></tr><tr><td>REDUCE</td><td>既存配列</td><td>累積処理</td><td>単一値</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN</a></td><td>既存配列</td><td>累積処理（途中結果）</td><td>同サイズ配列</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a></td><td>既存配列</td><td>行ごとにLAMBDA</td><td>列ベクトル</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a></td><td>既存配列</td><td>列ごとにLAMBDA</td><td>行ベクトル</td></tr><tr><td>MAKEARRAY</td><td>なし（行数×列数指定）</td><td>行番号・列番号から計算</td><td>新規配列</td></tr></tbody></table></figure>



<p>他の5つは既存の配列を変換・集計する関数です。MAKEARRAYだけが「配列を新しく生み出す」役割を持っています。</p>



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



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



<p>Excel 2019以前で使用すると発生します。MAKEARRAY関数はMicrosoft 365またはExcel 2021が必要です。関数名のスペルミスでも発生するので確認しましょう。</p>



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



<p>次のケースで発生します。</p>



<ul class="wp-block-list"><li>rows/colsに0以下の値や小数を指定した</li><li>LAMBDAの仮引数が2個になっていない</li></ul>



<p>行数・列数は1以上の整数を指定してください。LAMBDAの仮引数は必ず2つにしましょう。</p>



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



<p>配列が大きすぎてメモリ不足になると発生します。行数・列数を小さくして対処してください。</p>



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



<p>MAKEARRAY関数は、行数・列数とLAMBDAを指定して配列を自由に生成できる関数です。</p>



<p>ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式))</code></li><li>行番号(r)と列番号(c)は1から始まる</li><li>等差数列ならSEQUENCE、自由な計算が必要ならMAKEARRAY</li><li>対応環境はMicrosoft 365およびExcel 2021</li></ul>



<p>まずは九九表の例から試してみてください。慣れてきたら、条件付き配列やランダムデータ生成にも挑戦してみましょう。</p>



<p><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></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>ExcelのLAMBDAヘルパー関数を触っていて、「REDUCE関数って何に使うの？」と感じたことはありませんか。MAPやBYROWは直感的に使えても、REDUCEは「初期値」「累積値」という聞きなれない概念が出てきて、手が止まりがちです。</p>



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



<p>この記事では、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-7" checked><label class="toc-title" for="toc-checkbox-7">目次</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>REDUCE関数は「リデュース」と読みます。英語の&#8221;reduce&#8221;は「減らす・まとめる」という意味です。プログラミングの世界では「配列を1つの値に畳み込む操作」を指します。JavaScriptの<code>Array.reduce</code>やPythonの<code>functools.reduce</code>と同じ概念ですね。</p>



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



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



<p>REDUCE関数の構文は以下のとおりです。</p>



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



<p>シンプルな合計の例を見てみましょう。</p>



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



<p>この数式は、初期値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>引数の意味を表で整理します。</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>重要なルールが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>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>最終的に返るのは最後のステップの結果<strong>60</strong>だけです。途中経過の10や30は出力されません。「途中経過も見たい」という場合はSCAN関数を使います（後のセクションで解説します）。</p>



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



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



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



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



<p>最もシンプルな使い方です。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>初期値<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>掛け算の場合は初期値を<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>初期値<code>1</code>から始めて、1×2=2、2×3=6、6×4=24、24×5=<strong>120</strong>を返します。<code>=PRODUCT(A1:A4)</code>と同じ結果です。</p>



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



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



<p>文字列を連結する場合は、初期値を空文字<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>結果は「<strong>東京大阪名古屋</strong>」です。空文字からスタートして、要素を順番につなぎ合わせます。区切り文字を入れたい場合は次のセクションで紹介しますね。</p>



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



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



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



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



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



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



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



<p>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>処理の流れを追ってみましょう。</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>最終結果は約<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>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>A1:A3に{10, 20, 30}が入っている場合で比較します。REDUCE関数は最終値の60だけを返します。一方SCAN関数は各ステップの中間値{10, 30, 60}を配列として返します。</p>



<p>使い分けの基準はシンプルです。</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>「最終的な答えだけ欲しい」ならREDUCE、「途中経過も全部見たい」ならSCANと覚えておけば迷いませんよ。</p>



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



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



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



<p>REDUCE関数を使い始めると遭遇しやすいエラーをまとめました。</p>



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



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



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



<p>「エラーは出ないのに結果が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>積を求めるなら初期値は<code>1</code>、合計なら<code>0</code>、文字列結合なら<code>""</code>を設定してくださいね。</p>



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



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



<p>この記事のポイントを振り返ります。</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>REDUCE関数は「配列を1つの値に畳み込む」という概念さえ掴めれば、使い方の幅がどんどん広がります。まずは基本のSUM相当の式から試してみてください。</p>



<p>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>ExcelでLAMBDAやBYROWを触ってみたものの、「MAP関数って結局何が便利なの？」と感じていませんか。BYROWと似ているようで、実は役割がまったく違います。</p>



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



<p>この記事では、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-8" checked><label class="toc-title" for="toc-checkbox-8">目次</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">まとめ</a></li></ol>
    </div>
  </div>

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



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



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



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



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



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



<p>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>これらは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>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>この表をざっくり覚えておけば、「セル単位の変換か、行や列の集計か、全体の集約か」という観点で瞬時に判断できます。特に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>ここからはMAP関数の具体的な構文を見ていきましょう。引数の順番と役割を理解すれば、使い回しが効くようになります。</p>



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



<p>MAP関数の公式な構文は以下のとおりです。</p>



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



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



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



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



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



<p>引数の意味を整理すると次のとおりです。</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>重要なルールが2つあります。<strong>LAMBDAは必ず最後の引数</strong>でなければなりません。また、配列の個数とLAMBDAの変数の個数は必ず一致させてください。不一致の場合は<code>#VALUE!</code>エラーが発生します。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>さらに消費税込みの金額を返したい場合も、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>文字列操作にも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>この数式はA列の各セルを読み取り、条件に応じてラベル文字列を返します。結果はA2:A20と同じサイズの配列としてスピルされるため、ラベル列を別途手動で埋める必要がありません。</p>



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



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



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



<p>もう一歩進んで、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>この数式はD列が「Large」かつE列が「Red」の行だけを抽出します。MAPがTRUE/FALSEの配列を作り、FILTERの条件として機能する仕組みです。</p>



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



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



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



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



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



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



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



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



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



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



<p>迷ったときは以下の順で判断すると確実です。</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>この3ステップで大半の迷いは解消します。「戻り値の形」から逆算して考えるとミスが減ります。</p>



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



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



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



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



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



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



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



<p>よくある原因は、配列の個数と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>また<code>#CALC!</code>エラーが出る場合は、LAMBDA内部が配列を返してしまっているケースです。MAPのLAMBDAは「1セルにつき1つの値」を返す必要があります。</p>



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



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



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



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



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



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



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



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



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



<p>この記事のポイントを振り返ります。</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>「BYROWとMAPどちらを使うべきか？」に迷ったら、出力の形から逆算して判断してください。入力と同じ形にしたいならMAP、縦1列にしたいならBYROWです。この判断軸を覚えておけば、LAMBDAヘルパー関数を自在に使いこなせます。</p>



<p>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-9" checked><label class="toc-title" for="toc-checkbox-9">目次</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></ol></li><li><a href="#toc15" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc16" tabindex="0">#SPILL! エラー</a></li><li><a href="#toc17" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc18" tabindex="0">#CALC! エラー</a></li><li><a href="#toc19" tabindex="0">#NAME? エラー</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



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



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



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



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



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



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



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



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



<p>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>行ごとの集計（生徒ごとの合計点、商品ごとの売上など）には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>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>一方、<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>BYROW関数は引数が2つだけのシンプルな構造です。ただしLAMBDA関数との組み合わせが必須のため、初見だと少し戸惑うかもしれません。ここで構文と引数をしっかり押さえておきましょう。</p>



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



<p>BYROW関数の公式な構文は次の通りです。</p>



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



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



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



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



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



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



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



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



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



<p>もっとも使用頻度が高いのが、行ごとの合計です。たとえば下のような売上表があるとします。</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>この3行それぞれの合計を、D1セルに1つの数式で出すには次のように書きます。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>#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>具体例を見てみましょう。</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>「LAMBDAは各行について必ず1つの値を返す」というルールを守れば、#CALC!エラーは回避できます。</p>



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



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



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



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



<p>次のステップとして、列方向の処理を扱う<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>ExcelのBYCOL関数の使い方｜列ごとに関数適用</title>
		<link>https://mashukabu.com/excel-function-howto-use-bycol/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-bycol/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 12:10:13 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[BYCOL関数]]></category>
		<category><![CDATA[Excel中級者]]></category>
		<category><![CDATA[LAMBDA関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[列集計]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5899</guid>

					<description><![CDATA[ExcelのBYCOL関数の使い方を実例で解説。列ごとにSUM・AVERAGE・MAXをまとめて求める方法、LAMBDA構文の書き方、#SPILL!エラーの対処、BYROW関数との違いまでカバー。Microsoft 365ユーザー必見。]]></description>
										<content:encoded><![CDATA[
<p>毎月の集計表で、列ごとにSUM関数をコピペしていませんか。列数が増えるたびに数式をコピーして、見た目は揃っていてもどこかで貼り間違いが発生する。そんな地味な作業に時間を奪われるのはもったいないですよね。</p>



<p>もし1つの数式で「この表の各列の合計をまとめて出して」と指示できたらどうでしょうか。実はExcelのMicrosoft 365には、そのためのBYCOL関数という専用関数が用意されています。列単位で一気に集計を返してくれる、スピル時代ならではの便利な関数です。</p>



<p>この記事では、ExcelのBYCOL関数の使い方を基本から応用まで解説します。LAMBDA関数との組み合わせ方、#SPILL!エラーへの対処、BYROW関数との違い、さらにGoogleスプレッドシート版との差分まで、実務で詰まりやすいポイントを重点的に紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</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">Microsoft 365専用・スプレッドシート版との違い</a></li><li><a href="#toc3" tabindex="0">BYROW関数（行版）との対比</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">LAMBDAを省略できない理由</a></li></ol></li><li><a href="#toc7" tabindex="0">基本の使い方</a><ol><li><a href="#toc8" tabindex="0">列ごとにSUMを求める</a></li><li><a href="#toc9" tabindex="0">列ごとにAVERAGE・MAXを求める</a></li></ol></li><li><a href="#toc10" tabindex="0">応用例</a><ol><li><a href="#toc11" tabindex="0">BYCOL × IFで条件付き列集計</a></li><li><a href="#toc12" tabindex="0">複合計算（SUM÷COUNTなど）をネストする</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc14" tabindex="0">#SPILL!エラー｜隣のセルが空白か確認</a></li><li><a href="#toc15" tabindex="0">LAMBDA引数ミス｜引数の数が合わないとき</a></li><li><a href="#toc16" tabindex="0">バージョン非対応｜M365以外で使えない場合</a></li></ol></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p>ExcelのBYCOL関数は、配列の「列ごと」にLAMBDA関数を適用し、1行にまとめた結果を返す関数です。読み方は「バイコル」。「BY COLumn（列ごとに）」という名前の通り、表を縦方向に分割して各列を1つずつ処理するイメージで使います。</p>



<p>従来のExcelで列ごとの集計を行う場合、SUMやAVERAGEを列の数だけ横にコピーするのが一般的でした。BYCOL関数を使えば、1つの数式で「すべての列に同じ処理」を適用できます。結果はスピル（自動的に隣のセルへ展開される機能）で横方向に並ぶため、数式の管理箇所が1つに集約され、修正や検算の手間が大きく減ります。</p>



<p>戻り値の形状は「1行×N列」の配列です。たとえば2行×3列の表を渡せば、結果は1行×3列の配列として返ります。元データの「列の数」がそのまま結果の「セルの数」になる、と覚えておくと迷いません。</p>



<h3 class="wp-block-heading"><span id="toc2">Microsoft 365専用・スプレッドシート版との違い</span></h3>



<p>BYCOL関数はMicrosoft 365時代の新世代関数で、対応バージョンは限定的です。利用できる環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365 / Microsoft 365 for Mac</li><li>Excel for the web</li><li>Excel 2024 / Excel 2024 for Mac</li></ul>



<p>Excel 2019やExcel 2021では使えない点に注意してください。</p>



<p>GoogleスプレッドシートにもBYCOL関数は存在し、基本構文は <code>=BYCOL(配列または範囲, LAMBDA)</code> でExcel版とほぼ同じです。「Sheetsで使っていた数式をそのままExcelに持ってきたい」というケースでも、ほぼ書き換えなしで動くのが嬉しいポイントです。ただしスピルの干渉エラーの出方や、Excelテーブル内では動的配列関数が機能しないなど、Excel特有の注意点があります。</p>



<p>詳しいSheets版の書き方は、自サイトの<a href="https://mashukabu.com/spreadsheet-bycol-function/">スプレッドシートのBYCOL関数の使い方</a>も参考にしてください。両方の違いを押さえておくと、二重運用している環境でも迷わず使い分けられます。</p>



<h3 class="wp-block-heading"><span id="toc3">BYROW関数（行版）との対比</span></h3>



<p>BYCOL関数には「行版」とも言うべき兄弟関数、BYROW関数があります。BYROW関数は配列の「行ごと」にLAMBDAを適用し、「N行×1列」の配列を返します。「行はBYROW、列はBYCOL」と名前の頭文字で覚えると混乱しません。</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行×N列</td><td>N行×1列</td></tr><tr><td>典型用途</td><td>列ごとの合計・平均・最大値</td><td>行ごとの合計・平均・最大値</td></tr><tr><td>スピル方向</td><td>横方向</td><td>縦方向</td></tr></tbody></table></figure>



<p>どちらもLAMBDA関数を使って「各列/各行にどんな処理を適用するか」を自由に指定できます。行ごとの集計が必要ならBYROW、列ごとの集計ならBYCOL、と目的に合わせて選び分けるだけです。</p>



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



<p>BYCOL関数は引数が2つだけのシンプルな構造ですが、第2引数にLAMBDAが必須という点だけは他の関数と毛色が違います。ここで構文を正確に押さえておきましょう。</p>



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



<p>BYCOL関数の基本構文は次のとおりです。</p>



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



<p>引数の意味は下の表で整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>役割</th></tr></thead><tbody><tr><td><code>array</code></td><td>必須</td><td>処理したい配列またはセル範囲。A1:C10のような長方形の範囲を渡す</td></tr><tr><td><code>lambda(column)</code></td><td>必須</td><td>各列に適用するLAMBDA関数。<code>column</code>は1列分のデータを表す仮引数</td></tr></tbody></table></figure>



<p><code>array</code> には通常のセル範囲だけでなく、他の関数が返す配列もそのまま渡せます。<code>lambda(column)</code> の <code>column</code> という名前は自分で好きな名前に変えても構いません。たとえば <code>LAMBDA(col, SUM(col))</code> のように短い名前を使うと、数式が読みやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc6">LAMBDAを省略できない理由</span></h3>



<p>「SUMだけを使いたいのだから、LAMBDAは省略したい」と思うかもしれません。しかしBYCOL関数では、第2引数のLAMBDAは省略できません。理由は、BYCOL関数自体が「何の処理をするか」を知らない汎用関数だからです。</p>



<p>BYCOL関数は「各列を順番にLAMBDAへ渡す」という役割しか持ちません。列ごとに何を計算するかはLAMBDAの中で決める必要があります。次の2つを見比べると違いが明確です。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, SUM)</code></pre>



<p>上の書き方はNGです。SUMをLAMBDAで包まずに渡しているためエラーになります。正しくは次のように書きます。</p>



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



<p><code>LAMBDA(仮引数, 計算式)</code> の形で必ず包んであげてください。</p>



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



<p>ここからはBYCOL関数を使った基本的な集計パターンを紹介します。どれも実務の集計表で頻出するものばかりです。</p>



<h3 class="wp-block-heading"><span id="toc8">列ごとにSUMを求める</span></h3>



<p>まずは定番の「列ごとの合計」から。A1:C5に店舗別の売上が入っていて、各列（＝各店舗）の合計を一発で出したい場合の数式は次のとおりです。</p>



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



<p>この数式をE1に入力すると、E1:G1の3セルに各列の合計がスピルで展開されます。列数が10や20に増えても、範囲を <code>A1:T5</code> のように広げるだけでOKです。SUM関数をコピペする必要はありません。</p>



<p>Microsoft公式ドキュメントでは、各列の最大値を求める <code>=BYCOL(A1:C2, LAMBDA(array, MAX(array)))</code> が使用例として紹介されています。LAMBDAの仮引数名は <code>array</code> でも <code>col</code> でも動作は同じです。</p>



<h3 class="wp-block-heading"><span id="toc9">列ごとにAVERAGE・MAXを求める</span></h3>



<p>SUM以外の集計関数も同じ要領です。AVERAGEで平均、MAXで最大値、MINで最小値がそれぞれ1つの数式で取れます。</p>



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



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



<pre class="wp-block-code"><code>=BYCOL(A1:C5, LAMBDA(col, MIN(col)))</code></pre>



<p>これらを縦に並べて書けば、1つのセル範囲に「合計・平均・最大」を整然と出せます。従来なら関数を手で入力していた作業が、数式の使い回しで済むようになるのが最大のメリットです。</p>



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



<p>基本の使い方を押さえたら、実務でよく出てくる応用パターンにも挑戦してみましょう。BYCOL関数はLAMBDAの中身を自由に書けるため、組み合わせ次第で表現力がぐっと広がります。</p>



<h3 class="wp-block-heading"><span id="toc11">BYCOL × IFで条件付き列集計</span></h3>



<p>「各列のうち、100以上の値だけを合計したい」といった条件付き集計もBYCOL関数で実現できます。LAMBDAの中にIF関数を仕込み、条件を満たす要素だけをSUMに渡す形です。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(IF(col&gt;=100, col, 0))))</code></pre>



<p>この数式は各列について「100以上ならその値、未満なら0」を返し、その合計を取ります。SUMIF関数は範囲と条件を直接指定する使い方が主流ですが、BYCOL内ではLAMBDAの仮引数を条件判定に使えるため、より柔軟な集計が組めます。</p>



<p>同じ考え方で、COUNTIFのように「条件に合う件数」を列ごとに数えることもできます。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(--(col&gt;=100))))</code></pre>



<p><code>--(col>=100)</code> は、TRUE/FALSEを1/0に変換する定番テクニックです。BYCOLと組み合わせると、列ごとの条件一致件数がスピルで一気に並びます。</p>



<h3 class="wp-block-heading"><span id="toc12">複合計算（SUM÷COUNTなど）をネストする</span></h3>



<p>LAMBDAの中では複数の関数をネストして自由に計算できます。たとえば「各列の平均を自前で計算したい」ときは、SUMとCOUNTを組み合わせる書き方が可能です。</p>



<pre class="wp-block-code"><code>=BYCOL(A1:C10, LAMBDA(col, SUM(col)/COUNT(col)))</code></pre>



<p>単純な平均ならAVERAGEで十分ですが、分母と分子に別々の条件を絡めたいときに威力を発揮します。公式ドキュメントでは <code>=BYCOL(A1:C2, LAMBDA(array, SUMSQ(array)))</code> のように二乗和を求める例も紹介されています。通常の数式で書ける計算ならほぼ何でも詰め込める、と考えてOKです。</p>



<p>より複雑な式では、LET関数で中間変数を定義すると可読性が上がります。詳しくは<a href="https://mashukabu.com/excel-function-howto-use-let/">ExcelのLET関数の使い方</a>もあわせて参照してみてください。</p>



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



<p>BYCOL関数は新しい関数のため、初めて触るときに独特のエラーに遭遇することがあります。公式ドキュメントに記載されている代表的なエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc14">#SPILL!エラー｜隣のセルが空白か確認</span></h3>



<p>BYCOL関数の結果は横方向にスピルするため、結果が展開される領域が他のデータで埋まっていると <code>#SPILL!</code> エラーが発生します。Microsoft公式によれば、主な原因は次の3つです。</p>



<ul class="wp-block-list"><li>スピル範囲に既存データが残っている</li><li>スピル範囲に結合セルが含まれている</li><li>Excelテーブル内で動的配列関数を使っている（テーブル内ではスピルが機能しない）</li></ul>



<p>対処はシンプルで、スピル先のセルを空にすればOKです。エラーセルの横に表示される警告アイコンをクリックし、「妨害しているセルを選択」ボタンを押すと、原因となっているセルがハイライトされます。その位置のデータを退避するか、数式の入力位置を別の場所に変えましょう。</p>



<p>Excelテーブル内で使いたい場合は、一度テーブル外のセルに数式を書き、結果だけをテーブルに値貼り付けする運用がおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc15">LAMBDA引数ミス｜引数の数が合わないとき</span></h3>



<p><code>#VALUE!</code> エラーや <code>#CALC!</code> エラーが出たときは、LAMBDA関数の書き方を見直します。公式ドキュメントでは次のように区別されています。</p>



<ul class="wp-block-list"><li><code>#VALUE!</code>：無効なLAMBDA関数、またはLAMBDAのパラメータ数が正しくない（Incorrect Parameters）</li><li><code>#CALC!</code>：LAMBDA関数が提供されていない、またはLAMBDAが単一値以外を返している</li></ul>



<p>典型的なミスは、LAMBDAの仮引数を増やしすぎるパターンです。BYCOL関数のLAMBDAは仮引数1つだけを受け取ります。<code>LAMBDA(col, row, SUM(col))</code> のように引数を2つ書くと <code>#VALUE!</code> になります。</p>



<p>また <code>#CALC!</code> は、LAMBDAの中身が配列をそのまま返してしまった場合に出ます。SUMやAVERAGEのような集約関数で「1つの値」に畳み込む処理を必ず最後に置いてください。</p>



<h3 class="wp-block-heading"><span id="toc16">バージョン非対応｜M365以外で使えない場合</span></h3>



<p>Excel 2019やExcel 2021でBYCOL関数を使おうとすると、関数名が認識されず <code>#NAME?</code> エラーになります。BYCOL関数はMicrosoft 365系とExcel 2024系でのみ使える新しい関数だからです。</p>



<p>バージョンが原因かどうかは、「ファイル」→「アカウント」画面で確認できます。製品名が「Microsoft 365」や「Excel 2024」になっていれば対応済みです。「Excel 2021」「Excel 2019」と表示される場合は、そのPC環境ではBYCOL関数自体が存在しません。</p>



<p>対応バージョンのPCで数式を書き、値貼り付けで共有するか、SUMを列ごとに並べる従来の書き方にフォールバックする必要があります。Microsoft 365にアップグレードできるならそれが最速の解決策です。</p>



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



<p>ExcelのBYCOL関数は、列ごとの集計を1つの数式にまとめてくれる頼もしい関数です。SUM・AVERAGE・MAXなどの定番集計はもちろん、IFと組み合わせた条件付き集計や、SUM/COUNTを組み合わせたカスタム計算もLAMBDA内で自由に書けます。</p>



<p>ポイントを改めて整理すると次のとおりです。</p>



<ul class="wp-block-list"><li>構文は <code>=BYCOL(array, lambda(column))</code> で、LAMBDAは省略不可</li><li>戻り値は「1行×N列」の配列（列数がそのまま結果のセル数になる）</li><li>Microsoft 365・Excel 2024系でのみ動作。Excel 2021以前は <code>#NAME?</code> エラー</li><li><code>#SPILL!</code> エラーはスピル先の空き・結合セル・テーブル内使用を疑う</li><li>行ごとの集計が必要ならBYROW関数、列ごとならBYCOL関数で使い分ける</li></ul>



<p>LAMBDA関数の書き方に不安があるなら、先に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">ExcelのLAMBDA関数の使い方</a>で基本構文を押さえておくとBYCOLの理解が一気に進みます。コピペ集計から卒業して、スピル時代のスマートな集計術を自分の武器にしていきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-bycol/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
