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

<channel>
	<title>使い分け &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e4%bd%bf%e3%81%84%e5%88%86%e3%81%91/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 21 May 2026 11:42:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>使い分け &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelとGoogleスプレッドシートの違い｜使い分けと移行の注意点</title>
		<link>https://mashukabu.com/excel-vs-spreadsheet/</link>
					<comments>https://mashukabu.com/excel-vs-spreadsheet/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 13 Apr 2026 12:41:54 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[使い分け]]></category>
		<category><![CDATA[共同編集]]></category>
		<category><![CDATA[業務効率化]]></category>
		<category><![CDATA[比較]]></category>
		<category><![CDATA[移行]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5977</guid>

					<description><![CDATA[ExcelとGoogleスプレッドシートの違いを7つの比較項目で解説。料金・共同編集・関数・マクロなど業務で重要なポイントを比較し、使い分けの判断基準と移行時の注意点を紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「会社でGoogleスプレッドシートを使い始めたけど、Excelと何が違うの？」</p>



<p class="wp-block-paragraph">異動や入社をきっかけに、こんな疑問を持つ方は多いですよね。見た目は似ているのに、使い勝手が微妙に違います。使い分けを間違えると、作ったファイルが開けなかったり、マクロが動かなかったりと困る場面が出てきます。</p>



<p class="wp-block-paragraph">この記事では、ExcelとGoogleスプレッドシートの違いを7つの項目で比較します。業務シーン別の使い分けと、移行するときの注意点もあわせて解説します。</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">ExcelとGoogleスプレッドシートの違い【一覧比較表】</a></li><li><a href="#toc2" tabindex="0">Excelの特徴とメリット・デメリット</a><ol><li><a href="#toc3" tabindex="0">Excelが得意なこと</a></li><li><a href="#toc4" tabindex="0">Excelの弱点</a></li></ol></li><li><a href="#toc5" tabindex="0">Googleスプレッドシートの特徴とメリット・デメリット</a><ol><li><a href="#toc6" tabindex="0">スプレッドシートが得意なこと</a></li><li><a href="#toc7" tabindex="0">スプレッドシートの弱点</a></li></ol></li><li><a href="#toc8" tabindex="0">業務シーン別の使い分けガイド</a><ol><li><a href="#toc9" tabindex="0">個人作業中心の場合</a></li><li><a href="#toc10" tabindex="0">チームで共同編集する場合</a></li><li><a href="#toc11" tabindex="0">マクロ・VBAを使う場合</a></li></ol></li><li><a href="#toc12" tabindex="0">ExcelからGoogleスプレッドシートに移行するときの注意点</a><ol><li><a href="#toc13" tabindex="0">関数の互換性</a></li><li><a href="#toc14" tabindex="0">マクロ・VBAの移行</a></li><li><a href="#toc15" tabindex="0">書式・レイアウトの崩れ</a></li></ol></li><li><a href="#toc16" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelとGoogleスプレッドシートの違い【一覧比較表】</span></h2>



<p class="wp-block-paragraph">まずは結論です。ExcelとGoogleスプレッドシートの主要な違いを一覧表で確認しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>料金</td><td>Microsoft 365：年14,900円（個人）/ 月899円〜（法人）</td><td>無料（個人）/ 月680円〜（Google Workspace）</td></tr><tr><td>動作環境</td><td>デスクトップアプリ + Web版</td><td>ブラウザのみ（アプリ版もあり）</td></tr><tr><td>共同編集</td><td>対応（自動保存ON＋OneDrive保存が条件）</td><td>標準でリアルタイム共同編集</td></tr><tr><td>オフライン利用</td><td>デスクトップアプリで完全対応</td><td>Chrome拡張で限定的に対応</td></tr><tr><td>マクロ・自動化</td><td>VBA（Visual Basic for Applications）</td><td>Google Apps Script（JavaScript系）</td></tr><tr><td>AI機能</td><td>Copilot（有料オプション）</td><td>Gemini（Workspace有料プラン）</td></tr><tr><td>データ容量</td><td>約104万行 × 16,384列</td><td>1ファイル1,000万セルまで</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ざっくり言うと、<strong>Excelは「個人の高度な分析作業」に強く、Googleスプレッドシートは「チームでの共同作業」に強い</strong>ツールです。</p>



<p class="wp-block-paragraph">ここから、それぞれの特徴をくわしく見ていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc2">Excelの特徴とメリット・デメリット</span></h2>



<h3 class="wp-block-heading"><span id="toc3">Excelが得意なこと</span></h3>



<p class="wp-block-paragraph">Excelの最大の強みは、<strong>デスクトップアプリの処理能力</strong>です。</p>



<ul class="wp-block-list"><li><strong>大量データの処理</strong>: 数万行のデータでもサクサク動きます。ピボットテーブルや複雑なグラフの作成も得意です</li><li><strong>VBAマクロ</strong>: 定型作業を自動化できます。ボタン1つで請求書を作成するといった高度な自動化が可能です。くわしくは「<a href="https://mashukabu.com/excel-vba-macro-beginners-guide/">Excel VBAマクロ入門</a>」で解説しています</li><li><strong>高度な関数</strong>: XLOOKUP、XMATCH、LAMBDAなど、分析向けの関数が豊富です</li><li><strong>オフライン対応</strong>: インターネットがなくても作業できます。出張先や移動中でも安心です</li><li><strong>Power Query / Power Pivot</strong>: <a href="https://mashukabu.com/modern-excel-explanation/">モダンExcel</a>の機能で、大規模データの変換・集計ができます</li></ul>



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



<p class="wp-block-paragraph">一方で、いくつかの弱点もあります。</p>



<ul class="wp-block-list"><li><strong>共同編集のハードル</strong>: リアルタイム共同編集にはOneDrive保存と自動保存ONが必要です。社内ファイルサーバーに保存したExcelファイルでは共同編集できません</li><li><strong>コスト</strong>: Microsoft 365のサブスクリプションが必要です。買い切り版（Excel 2021など）もありますが、最新機能は使えません</li><li><strong>バージョン管理</strong>: 「売上データ_最終版_v3.xlsx」のようなファイル名管理になりがちです</li></ul>



<h2 class="wp-block-heading"><span id="toc5">Googleスプレッドシートの特徴とメリット・デメリット</span></h2>



<h3 class="wp-block-heading"><span id="toc6">スプレッドシートが得意なこと</span></h3>



<p class="wp-block-paragraph">Googleスプレッドシートの最大の強みは、<strong>リアルタイム共同編集</strong>です。</p>



<ul class="wp-block-list"><li><strong>共同編集</strong>: URLを共有するだけで、複数人が同時に編集できます。誰がどこを編集しているかもリアルタイムで表示されます</li><li><strong>無料で使える</strong>: Googleアカウントがあれば無料で利用可能です</li><li><strong>自動保存</strong>: 変更が自動で保存されます。「保存し忘れた」というトラブルがありません</li><li><strong>独自関数</strong>: ARRAYFORMULA、IMPORTRANGE、GOOGLEFINANCEなど、スプレッドシートにしかない便利な関数があります。たとえば<a href="https://mashukabu.com/spreadsheet-filter-function/">FILTER関数</a>を使えば、条件に合うデータを自動抽出できます</li><li><strong>AI機能</strong>: <a href="https://mashukabu.com/spreadsheet-gemini-ai-function/">Gemini</a>を使って、AIにデータ整理や分析を任せられます</li></ul>



<h3 class="wp-block-heading"><span id="toc7">スプレッドシートの弱点</span></h3>



<p class="wp-block-paragraph">スプレッドシートにも苦手な部分があります。</p>



<ul class="wp-block-list"><li><strong>大量データの処理速度</strong>: 数万行を超えるとブラウザが重くなります。Excelのデスクトップアプリと比べると処理速度は劣ります</li><li><strong>オフラインの制限</strong>: Chrome拡張で一応対応していますが、機能が制限されます</li><li><strong>VBAが使えない</strong>: Excelのマクロ（VBA）は動きません。代わりにGoogle Apps Script（GAS）を使いますが、VBAとは別の言語です</li><li><strong>印刷レイアウト</strong>: 印刷のきめ細かい設定はExcelの方が得意です</li></ul>



<h2 class="wp-block-heading"><span id="toc8">業務シーン別の使い分けガイド</span></h2>



<p class="wp-block-paragraph">「結局どっちを使えばいいの？」と迷ったら、以下の判断基準を参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc9">個人作業中心の場合</span></h3>



<p class="wp-block-paragraph"><strong>Excelがおすすめ</strong>です。</p>



<p class="wp-block-paragraph">大量データの集計やピボットテーブルでの分析など、個人で黙々と作業する場面ではExcelの処理能力が活きます。オフラインでも使えるので、ネット環境を気にする必要もありません。</p>



<h3 class="wp-block-heading"><span id="toc10">チームで共同編集する場合</span></h3>



<p class="wp-block-paragraph"><strong>Googleスプレッドシートがおすすめ</strong>です。</p>



<p class="wp-block-paragraph">シフト表、進捗管理表、アンケート集計など、複数人で同じファイルを編集する業務に向いています。URLを共有するだけで始められるので、導入のハードルも低いです。</p>



<h3 class="wp-block-heading"><span id="toc11">マクロ・VBAを使う場合</span></h3>



<p class="wp-block-paragraph"><strong>Excelが必須</strong>です。</p>



<p class="wp-block-paragraph">VBAマクロはExcel専用です。既存のVBAマクロがある業務では、Googleスプレッドシートへの移行は慎重に検討してください。Google Apps Scriptで同じ処理を書き直す必要があり、移行コストが高くなります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>迷ったときのシンプルな判断基準です。<br>&#8211; 1人で使う + 大量データ → <strong>Excel</strong><br>&#8211; チームで使う + リアルタイム共有 → <strong>Googleスプレッドシート</strong><br>&#8211; VBAマクロが必要 → <strong>Excel一択</strong></p></blockquote>



<h2 class="wp-block-heading"><span id="toc12">ExcelからGoogleスプレッドシートに移行するときの注意点</span></h2>



<p class="wp-block-paragraph">会社の方針でGoogleスプレッドシートに移行するケースも増えています。移行時に注意すべき3つのポイントを押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc13">関数の互換性</span></h3>



<p class="wp-block-paragraph">基本的な関数（SUM、IF、VLOOKUPなど）はそのまま使えます。ただし、一部の関数は互換性がありません。</p>



<figure class="wp-block-table"><table><thead><tr><th>状況</th><th>Excel</th><th>Googleスプレッドシート</th></tr></thead><tbody><tr><td>複数条件で検索</td><td>XLOOKUP / XMATCH</td><td><a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP</a>は対応済み。XMATCHは未対応</td></tr><tr><td>配列の一括処理</td><td>スピル（自動展開）</td><td>ARRAYFORMULA関数で囲む</td></tr><tr><td>他ファイル参照</td><td>外部参照リンク</td><td>IMPORTRANGE関数</td></tr><tr><td>データの並べ替え</td><td>SORT関数</td><td><a href="https://mashukabu.com/spreadsheet-sort-sortn-sortby/">SORT / SORTN / SORTBY関数</a></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">移行後は、エラーが出ていないかシート全体を確認することをおすすめします。</p>



<h3 class="wp-block-heading"><span id="toc14">マクロ・VBAの移行</span></h3>



<p class="wp-block-paragraph"><strong>VBAマクロはGoogleスプレッドシートでは動きません。</strong></p>



<p class="wp-block-paragraph">Googleスプレッドシートの自動化にはGoogle Apps Script（GAS）を使います。GASはJavaScriptベースの言語なので、VBAとは文法が違います。簡単なマクロなら書き直せますが、複雑なVBAマクロの移行には専門知識が必要です。</p>



<p class="wp-block-paragraph">移行前に、現在使っているVBAマクロの一覧を作って、どれが本当に必要かを棚卸ししましょう。使っていないマクロまで移行する必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc15">書式・レイアウトの崩れ</span></h3>



<p class="wp-block-paragraph">ExcelファイルをGoogleスプレッドシートで開くと、以下のような崩れが起きることがあります。</p>



<ul class="wp-block-list"><li><strong>条件付き書式</strong>: 一部のルールが正しく変換されない</li><li><strong>グラフ</strong>: デザインや書式設定が変わる場合がある</li><li><strong>セル幅・フォント</strong>: 微妙にずれることがある</li><li><strong>ピボットテーブル</strong>: Googleスプレッドシートの形式に変換される</li></ul>



<p class="wp-block-paragraph">大事なファイルは、移行後にレイアウトを手動で確認・調整してください。</p>



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



<p class="wp-block-paragraph">ExcelとGoogleスプレッドシートの違いを振り返りましょう。</p>



<ul class="wp-block-list"><li><strong>Excel</strong>: デスクトップアプリの高い処理能力。大量データ分析・VBAマクロ・オフライン作業が得意</li><li><strong>Googleスプレッドシート</strong>: リアルタイム共同編集。チーム作業・無料利用・自動保存が得意</li><li><strong>移行時</strong>: 関数互換性・VBA非対応・書式崩れの3点に注意</li></ul>



<p class="wp-block-paragraph">どちらが「正解」というものではなく、業務内容に合わせて使い分けるのがベストです。チームでの共同作業が多い方は、まずGoogleスプレッドシートの基本操作から始めてみてください。Excel関数の知識がある方なら、<a href="https://mashukabu.com/excel-function/">スプレッドシートの関数</a>もすぐに使いこなせるはずです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vs-spreadsheet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのLOOKUP関数の使い方｜VLOOKUPとの違いも解説</title>
		<link>https://mashukabu.com/spreadsheet-lookup-function/</link>
					<comments>https://mashukabu.com/spreadsheet-lookup-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:32:50 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LOOKUP]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[使い分け]]></category>
		<category><![CDATA[検索関数]]></category>
		<category><![CDATA[近似一致]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4815</guid>

					<description><![CDATA[スプレッドシートのLOOKUP関数の使い方を基本から解説。ベクトル形式・配列形式の構文、近似一致を活かしたランク判定・料金区分の実務例、VLOOKUPとの使い分け・FAQまで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「1行だけの表からデータを引きたい」「VLOOKUPほど大げさな関数を使うまでもない」。スプレッドシートで検索をするとき、こんな場面はありませんか。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>や<a href="https://mashukabu.com/spreadsheet-hlookup-function/">HLOOKUP関数</a>は便利ですが、引数が多くて構文もやや長めです。もっとシンプルに書きたいときがありますよね。</p>



<p class="wp-block-paragraph">そんなときに使えるのがLOOKUP関数です。1行または1列の範囲をサッと検索して、対応する値を返してくれます。この記事ではスプレッドシートのLOOKUP関数の基本から、VLOOKUPとの違い・使い分け・よくある質問までわかりやすく紹介します。</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">スプレッドシートのLOOKUP関数とは？</a></li><li><a href="#toc2" tabindex="0">LOOKUP関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">ベクトル形式（基本）</a></li><li><a href="#toc4" tabindex="0">配列形式</a></li></ol></li><li><a href="#toc5" tabindex="0">LOOKUP関数の基本的な使い方</a></li><li><a href="#toc6" tabindex="0">LOOKUP関数の実践的な使い方・応用例</a><ol><li><a href="#toc7" tabindex="0">成績ランク判定（近似一致の活用）</a></li><li><a href="#toc8" tabindex="0">送料区分の自動判定</a></li><li><a href="#toc9" tabindex="0">IFERROR関数と組み合わせてエラーを防ぐ</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></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc14" tabindex="0">一番多いミス: 検索範囲が昇順でない</a></li></ol></li><li><a href="#toc15" tabindex="0">LOOKUP関数とVLOOKUP関数の違いを徹底比較</a><ol><li><a href="#toc16" tabindex="0">違い1: 検索方向の柔軟性</a></li><li><a href="#toc17" tabindex="0">違い2: 完全一致と近似一致</a></li><li><a href="#toc18" tabindex="0">違い3: 結果の指定方法</a></li><li><a href="#toc19" tabindex="0">違い4: 並べ替えの必要性</a></li><li><a href="#toc20" tabindex="0">検索関数の比較表（HLOOKUP・XLOOKUPも含む）</a></li><li><a href="#toc21" tabindex="0">どの関数を選べばいい？ 判断フロー</a></li></ol></li><li><a href="#toc22" tabindex="0">LOOKUP関数のよくある質問（FAQ）</a><ol><li><a href="#toc23" tabindex="0">Q1. LOOKUP関数とVLOOKUP関数のどちらを覚えればいいですか？</a></li><li><a href="#toc24" tabindex="0">Q2. LOOKUP関数は廃止予定の関数ですか？</a></li><li><a href="#toc25" tabindex="0">Q3. LOOKUP関数で完全一致の検索はできますか？</a></li><li><a href="#toc26" tabindex="0">Q4. LOOKUP関数で大文字・小文字を区別できますか？</a></li><li><a href="#toc27" tabindex="0">Q5. 検索範囲が並べ替えできない場合はどうすればいいですか？</a></li><li><a href="#toc28" tabindex="0">Q6. ExcelのLOOKUP関数と同じように使えますか？</a></li></ol></li><li><a href="#toc29" tabindex="0">まとめ</a><ol><li><a href="#toc30" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのLOOKUP関数とは？</span></h2>



<p class="wp-block-paragraph">LOOKUP関数（読み方：ルックアップ関数）は、1行または1列の範囲を検索して対応する値を返す関数です。関数名は英語の「Lookup（検索・照合する）」がそのまま由来になっています。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>が「縦方向（Vertical）の表検索」、<a href="https://mashukabu.com/spreadsheet-hlookup-function/">HLOOKUP関数</a>が「横方向（Horizontal）の表検索」に特化しています。一方、LOOKUP関数は<strong>1行/1列のシンプルな範囲</strong>を検索するのが特徴です。</p>



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



<ul class="wp-block-list"><li>1列のデータから対応する値を取得する</li><li>1行のデータから対応する値を取得する</li><li>近似一致でランク判定や料金区分を行う</li><li>検索方向（縦・横）を意識せずに書ける</li></ul>



<p class="wp-block-paragraph">検索範囲が小さい場面では、VLOOKUPより短い数式で済むのがメリットですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>LOOKUP関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。</p></blockquote>



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



<p class="wp-block-paragraph">LOOKUP関数には2つの書き方があります。実務でよく使うのは「ベクトル形式」です。</p>



<h3 class="wp-block-heading"><span id="toc3">ベクトル形式（基本）</span></h3>



<pre class="wp-block-code"><code>=LOOKUP(検索キー, 検索範囲, 結果範囲)</code></pre>



<p class="wp-block-paragraph">検索範囲から検索キーを探し、結果範囲の同じ位置にある値を返します。VLOOKUPの「列番号」の代わりに、結果範囲を直接指定するイメージです。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>意味</th><th>指定例</th></tr></thead><tbody><tr><td>検索キー</td><td>必須</td><td>探したい値</td><td>A2</td></tr><tr><td>検索範囲</td><td>必須</td><td>検索する1行または1列の範囲</td><td>B2:B100</td></tr><tr><td>結果範囲</td><td>必須</td><td>結果を返す1行または1列の範囲</td><td>C2:C100</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc4">配列形式</span></h3>



<pre class="wp-block-code"><code>=LOOKUP(検索キー, 配列)</code></pre>



<p class="wp-block-paragraph">配列（複数行×複数列の範囲）の最初の行または列を検索し、<strong>最後の行または列</strong>の対応する値を返します。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>意味</th><th>指定例</th></tr></thead><tbody><tr><td>検索キー</td><td>必須</td><td>探したい値</td><td>A2</td></tr><tr><td>配列</td><td>必須</td><td>複数行×複数列の範囲</td><td>B2:D10</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">配列の形によって検索方向が自動で切り替わります。</p>



<ul class="wp-block-list"><li><strong>列数 > 行数</strong>: 最初の行を横方向に検索 → 最後の行の値を返す</li><li><strong>行数 >= 列数</strong>: 最初の列を縦方向に検索 → 最後の列の値を返す</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>LOOKUP関数は<strong>近似一致</strong>で検索します。検索範囲は<strong>昇順に並べ替え済み</strong>であることが前提です。完全一致で検索したい場合は<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>（第4引数にFALSE）を使ってください。</p></blockquote>



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



<p class="wp-block-paragraph">商品コードから商品名を取得する例で見てみましょう。</p>



<p class="wp-block-paragraph">A列に商品コード（昇順）、B列に商品名が並んでいるとします。D2に入力したコードから商品名を取得するにはこう書きます。</p>



<pre class="wp-block-code"><code>=LOOKUP(D2, A2:A10, B2:B10)</code></pre>



<p class="wp-block-paragraph">各引数の意味は次のとおりです。</p>



<ul class="wp-block-list"><li>D2: 検索キー（入力した商品コード）</li><li>A2:A10: 検索範囲（商品コードの列）</li><li>B2:B10: 結果範囲（商品名の列）</li></ul>



<p class="wp-block-paragraph">D2に「P-003」と入力すると、A列から「P-003」以下の最大値を探します。そして同じ行のB列の値を返してくれます。</p>



<p class="wp-block-paragraph">配列形式で書くと、さらに短くなります。</p>



<pre class="wp-block-code"><code>=LOOKUP(D2, A2:B10)</code></pre>



<p class="wp-block-paragraph">A2:B10の最初の列（A列）を検索し、最後の列（B列）の値を返します。結果は同じですが、引数が1つ減ってスッキリしますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>検索範囲が昇順でないと、正しい結果が返りません。データを事前に並べ替えておくか、<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>（完全一致）を使いましょう。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc7">成績ランク判定（近似一致の活用）</span></h3>



<p class="wp-block-paragraph">LOOKUP関数の近似一致は、スコアに応じたランク判定で力を発揮します。</p>



<p class="wp-block-paragraph">F列に境界値（昇順）、G列にランクを用意します。</p>



<figure class="wp-block-table"><table><thead><tr><th>F列（境界値）</th><th>G列（ランク）</th></tr></thead><tbody><tr><td>0</td><td>D</td></tr><tr><td>60</td><td>C</td></tr><tr><td>70</td><td>B</td></tr><tr><td>80</td><td>A</td></tr><tr><td>90</td><td>S</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">点数が入ったB2セルからランクを判定するにはこう書きます。</p>



<pre class="wp-block-code"><code>=LOOKUP(B2, F2:F6, G2:G6)</code></pre>



<p class="wp-block-paragraph">B2が「75」なら、F列から75以下の最大値「70」を見つけます。そして対応するG列の「B」を返してくれます。</p>



<p class="wp-block-paragraph">VLOOKUPで同じことをするには <code>=VLOOKUP(B2, F2:G6, 2, TRUE)</code> と書きます。LOOKUP関数のほうが引数が少なくて直感的ですね。</p>



<h3 class="wp-block-heading"><span id="toc8">送料区分の自動判定</span></h3>



<p class="wp-block-paragraph">ECサイトの管理シートなどで、注文金額に応じた送料を自動判定する場面にも使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>H列（金額の境界値）</th><th>I列（送料）</th></tr></thead><tbody><tr><td>0</td><td>800</td></tr><tr><td>3000</td><td>500</td></tr><tr><td>5000</td><td>300</td></tr><tr><td>10000</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">注文金額がC2セルに入っているとき、送料を求めるにはこう書きます。</p>



<pre class="wp-block-code"><code>=LOOKUP(C2, H2:H5, I2:I5)</code></pre>



<p class="wp-block-paragraph">C2が「4500」なら、H列から4500以下の最大値「3000」を見つけます。対応するI列の「500」（送料500円）が返ります。<a href="https://mashukabu.com/spreadsheet-if-function/">IF関数</a>をネストして書くより、はるかにシンプルですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">IFERROR関数と組み合わせてエラーを防ぐ</span></h3>



<p class="wp-block-paragraph">LOOKUP関数は検索キーが検索範囲の最小値より小さいと#N/Aエラーを返します。<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>で囲めば、エラー時に代わりの値を表示できます。</p>



<pre class="wp-block-code"><code>=IFERROR(LOOKUP(D2, A2:A10, B2:B10), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">実務では「該当なし」や空文字「&#8221;&#8221;」を指定するケースが多いです。検索系の数式には、IFERRORをセットで使う習慣をつけておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">別シートのデータを検索する</span></h3>



<p class="wp-block-paragraph">検索先が別シートにある場合は、シート名のあとに「!」をつけます。</p>



<pre class="wp-block-code"><code>=LOOKUP(A2, マスタ!B:B, マスタ!C:C)</code></pre>



<p class="wp-block-paragraph">シート名に空白を含む場合はシングルクォーテーションで囲みます。</p>



<pre class="wp-block-code"><code>=LOOKUP(A2, '商品 マスタ'!B:B, '商品 マスタ'!C:C)</code></pre>



<p class="wp-block-paragraph">別シートの範囲をマウスで選択すると、シート名と「!」が自動で入力されます。手入力よりもミスが減るのでおすすめです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>別シートを参照する検索は、<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>でも同じ書き方です。マスタテーブルを別シートに置いて管理するのは、スプレッドシートの定番パターンですよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc11">最後に一致した値を取得する</span></h3>



<p class="wp-block-paragraph">LOOKUP関数には「検索キー以下の最大値を返す」という特性があります。これを利用すると、重複データの中から<strong>最後に一致した値</strong>を取得できます。</p>



<p class="wp-block-paragraph">たとえばA列に担当者名、B列に対応日付が並んでいるとします。担当者「田中」の最新の対応日付を取得するにはこう書きます。</p>



<pre class="wp-block-code"><code>=LOOKUP(2, 1/(A2:A100=&quot;田中&quot;), B2:B100)</code></pre>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。</p>



<ul class="wp-block-list"><li><code>A2:A100="田中"</code> → 条件に一致するセルはTRUE（1）、それ以外はFALSE（0）</li><li><code>1/TRUE</code> → 1、<code>1/FALSE</code> → エラー（ゼロ除算）</li><li>LOOKUP関数はエラーをスキップして、最後の「1」の位置に対応するB列の値を返す</li></ul>



<p class="wp-block-paragraph">この使い方はVLOOKUPでは実現できません。LOOKUP関数ならではのテクニックです。特定の条件に合う最新データを取り出したいときに重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">担当者ごとの最新ステータスを取り出す</span></h3>



<p class="wp-block-paragraph">「最後に一致した値を取得する」テクニックは、進捗管理シートでも便利です。A列に担当者、B列にステータス（着手前/対応中/完了）が時系列で並んでいるとします。</p>



<p class="wp-block-paragraph">担当者「鈴木」の最新ステータスを取り出すにはこう書きます。</p>



<pre class="wp-block-code"><code>=LOOKUP(2, 1/(A2:A100=&quot;鈴木&quot;), B2:B100)</code></pre>



<p class="wp-block-paragraph">新しい行が下に追加されていく前提の表なら、ピボットテーブルを作らなくても1行の数式で最新値が拾えます。日々のデータ更新が多い管理シートで重宝するテクニックですよ。</p>



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



<p class="wp-block-paragraph">LOOKUP関数で発生しやすいエラーをまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>検索キーが検索範囲の最小値より小さい</td><td>データを確認するか、IFERRORで囲む</td></tr><tr><td>#N/A</td><td>検索範囲が昇順でない</td><td>検索範囲を昇順に並べ替える</td></tr><tr><td>#REF!</td><td>検索範囲と結果範囲のサイズが異なる</td><td>両方の範囲を同じ行数（または列数）に揃える</td></tr><tr><td>#VALUE!</td><td>検索キーが空白</td><td>検索キーのセルにデータを入力する</td></tr><tr><td>間違った値が返る</td><td>検索範囲が昇順でない</td><td>昇順に並べ替えるか、VLOOKUPの完全一致を使う</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc14">一番多いミス: 検索範囲が昇順でない</span></h3>



<p class="wp-block-paragraph">LOOKUP関数でもっとも多いトラブルが「検索範囲が昇順になっていない」ケースです。近似一致専用の関数なので、昇順でないと<strong>間違った値を返すことがあります</strong>。</p>



<p class="wp-block-paragraph">厄介なのは、エラーにならず誤った結果が返る場合があること。見た目上は正常に動いているように見えるため、気づきにくい点に注意してください。</p>



<p class="wp-block-paragraph">対処法は2つあります。</p>



<ol class="wp-block-list"><li><strong>検索範囲を昇順に並べ替える</strong>: データ入力時にルール化しておくのがおすすめです</li><li><strong>完全一致の関数に切り替える</strong>: 以下の関数を使いましょう</li></ol>



<ul class="wp-block-list"><li><strong>1列の表を縦方向に検索</strong> → <a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>（第4引数にFALSE）</li><li><strong>1行の表を横方向に検索</strong> → <a href="https://mashukabu.com/spreadsheet-hlookup-function/">HLOOKUP関数</a>（第4引数にFALSE）</li><li><strong>方向を問わず柔軟に検索</strong> → <a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a></li></ul>



<h2 class="wp-block-heading"><span id="toc15">LOOKUP関数とVLOOKUP関数の違いを徹底比較</span></h2>



<p class="wp-block-paragraph">「LOOKUPとVLOOKUPはどう違うの？」という疑問は、検索関数を学び始めた方からよく聞かれます。両者の違いを4つの観点で整理します。</p>



<h3 class="wp-block-heading"><span id="toc16">違い1: 検索方向の柔軟性</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>は<strong>縦方向（列方向）の検索専用</strong>です。一方、LOOKUP関数は1行でも1列でも検索できます。</p>



<p class="wp-block-paragraph">配列形式を使えば、検索範囲の形に応じて方向が自動で切り替わるのが特徴です。横方向のデータを検索したい場合、VLOOKUPでは対応できません。LOOKUP関数なら範囲指定を変えるだけでOKです。</p>



<h3 class="wp-block-heading"><span id="toc17">違い2: 完全一致と近似一致</span></h3>



<p class="wp-block-paragraph">VLOOKUPは第4引数で<strong>完全一致（FALSE）</strong>と<strong>近似一致（TRUE）</strong>を選べます。商品コードや社員番号のような「ピッタリ一致するものだけを探したい」場面に向いています。</p>



<p class="wp-block-paragraph">LOOKUP関数は<strong>近似一致のみ</strong>です。検索キーと完全に一致しなくても、検索キー以下の最大値を返します。「○○以上△△未満」の区間判定が得意な反面、完全一致が必要な場面では使えません。</p>



<h3 class="wp-block-heading"><span id="toc18">違い3: 結果の指定方法</span></h3>



<pre class="wp-block-code"><code>=LOOKUP(D2, A2:A10, C2:C10)
=VLOOKUP(D2, A2:C10, 3, FALSE)</code></pre>



<p class="wp-block-paragraph">LOOKUPは結果範囲（C2:C10）を直接指定します。VLOOKUPは検索範囲全体（A2:C10）を指定して、3列目を番号で指定します。</p>



<p class="wp-block-paragraph">列の挿入・削除があったとき、VLOOKUPは列番号がずれるリスクがあります。LOOKUPは結果範囲を直接指定するので、列の増減に強いのがメリットです。</p>



<h3 class="wp-block-heading"><span id="toc19">違い4: 並べ替えの必要性</span></h3>



<p class="wp-block-paragraph">LOOKUPは近似一致専用のため、検索範囲を<strong>昇順に並べ替えておく必要があります</strong>。データの順序がそのまま結果に影響します。</p>



<p class="wp-block-paragraph">VLOOKUPは完全一致（FALSE）を指定すれば、検索範囲が並べ替えられていなくても正しい結果を返します。実務では完全一致が基本なので、この点はVLOOKUPの大きなメリットです。</p>



<h3 class="wp-block-heading"><span id="toc20">検索関数の比較表（HLOOKUP・XLOOKUPも含む）</span></h3>



<p class="wp-block-paragraph">スプレッドシートには検索関数が複数あります。「どれを使えばいいの？」と迷う方も多いですよね。それぞれの特徴を比較表で整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>特徴</th><th>LOOKUP</th><th><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP</a></th><th><a href="https://mashukabu.com/spreadsheet-hlookup-function/">HLOOKUP</a></th><th><a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP</a></th></tr></thead><tbody><tr><td>検索方向</td><td>1行/1列（自動判定）</td><td>縦方向のみ</td><td>横方向のみ</td><td>縦・横どちらも可</td></tr><tr><td>一致方式</td><td>近似一致のみ</td><td>完全一致/近似一致</td><td>完全一致/近似一致</td><td>完全一致/近似一致</td></tr><tr><td>結果の指定方法</td><td>結果範囲を直接指定</td><td>列番号で指定</td><td>行番号で指定</td><td>戻り範囲を直接指定</td></tr><tr><td>左方向・上方向の検索</td><td>可能（範囲指定次第）</td><td>不可</td><td>不可</td><td>可能</td></tr><tr><td>エラー時の既定値</td><td>IFERROR必要</td><td>IFERROR必要</td><td>IFERROR必要</td><td>引数で指定可</td></tr><tr><td>複数列を一括で返す</td><td>不可</td><td>不可</td><td>不可</td><td>可能</td></tr><tr><td>数式の長さ</td><td>短い</td><td>普通</td><td>普通</td><td>やや長い</td></tr><tr><td>並べ替えの前提</td><td>必要（昇順）</td><td>FALSEなら不要</td><td>FALSEなら不要</td><td>不要</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc21">どの関数を選べばいい？ 判断フロー</span></h3>



<p class="wp-block-paragraph">検索関数を選ぶときは、次の順番で考えるとスムーズです。</p>



<p class="wp-block-paragraph"><strong>ステップ1: 完全一致か近似一致か？</strong></p>



<p class="wp-block-paragraph">まず「探している値とピッタリ一致するものを見つけたいか」を考えます。商品コードや社員番号など、一致するものだけを探したい場合は<strong>完全一致</strong>です。実務の9割はこちらに該当します。</p>



<p class="wp-block-paragraph">完全一致なら → <a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>（第4引数にFALSE）が最も一般的です。</p>



<p class="wp-block-paragraph"><strong>ステップ2: 近似一致ならLOOKUP関数</strong></p>



<p class="wp-block-paragraph">ランク判定や料金区分など「○○以上△△未満」の区間で判定したい場合は<strong>近似一致</strong>です。LOOKUP関数の出番ですよ。</p>



<p class="wp-block-paragraph"><strong>ステップ3: 特殊な要件があるか？</strong></p>



<ul class="wp-block-list"><li>横方向のデータを検索 → <a href="https://mashukabu.com/spreadsheet-hlookup-function/">HLOOKUP関数</a></li><li>左方向の検索や複数列の取得 → <a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a></li><li>検索位置を柔軟に指定 → <a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a> + <a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a>の組み合わせ</li></ul>



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



<h3 class="wp-block-heading"><span id="toc23">Q1. LOOKUP関数とVLOOKUP関数のどちらを覚えればいいですか？</span></h3>



<p class="wp-block-paragraph">実務でまず覚えるべきは<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>です。完全一致で検索できるので、商品コードや社員番号といったID検索の場面で使えます。</p>



<p class="wp-block-paragraph">LOOKUP関数は「近似一致でランクや区分を判定する」という特定の場面に強い関数です。VLOOKUPに慣れてから、必要に応じて使い分けていけば十分ですよ。</p>



<h3 class="wp-block-heading"><span id="toc24">Q2. LOOKUP関数は廃止予定の関数ですか？</span></h3>



<p class="wp-block-paragraph">廃止予定ではありません。LOOKUP関数はGoogleスプレッドシート・Excel双方で標準サポートされており、引き続き利用できます。</p>



<p class="wp-block-paragraph">ただし、より柔軟な<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>が登場した現在、新規にデータ参照を組むなら XLOOKUP を選ぶ方がメリットが多いケースもあります。既存シートの保守ではLOOKUPをそのまま使い、新規ならXLOOKUPを検討する、という使い分けがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc25">Q3. LOOKUP関数で完全一致の検索はできますか？</span></h3>



<p class="wp-block-paragraph">LOOKUP関数だけでは完全一致は実現できません。LOOKUPは構造上、近似一致専用の関数です。</p>



<p class="wp-block-paragraph">完全一致で検索したい場合は、<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>・<a href="https://mashukabu.com/spreadsheet-hlookup-function/">HLOOKUP関数</a>・<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>のいずれかを使ってください。これらは引数で完全一致を指定できます。</p>



<h3 class="wp-block-heading"><span id="toc26">Q4. LOOKUP関数で大文字・小文字を区別できますか？</span></h3>



<p class="wp-block-paragraph">LOOKUP関数は大文字・小文字を区別しません。「APPLE」と「apple」は同じ値として扱われます。</p>



<p class="wp-block-paragraph">大文字・小文字を区別して検索したい場合は、別途EXACT関数などを組み合わせる方法があります。区別が必要な場面はあまり多くありませんが、システムIDなど大文字小文字に意味があるデータでは注意しましょう。</p>



<h3 class="wp-block-heading"><span id="toc27">Q5. 検索範囲が並べ替えできない場合はどうすればいいですか？</span></h3>



<p class="wp-block-paragraph">並べ替えができない（元データを並び替えたくない）場合は、LOOKUP関数の使用は避けましょう。代わりに<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>（完全一致FALSE）や<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>を使うのがおすすめです。</p>



<p class="wp-block-paragraph">これらは並べ替え不要で正しく動作します。元の表の並びを保ったまま検索したいときに重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc28">Q6. ExcelのLOOKUP関数と同じように使えますか？</span></h3>



<p class="wp-block-paragraph">はい、ExcelとGoogleスプレッドシートのLOOKUP関数は構文・動作ともにほぼ同じです。ExcelファイルとGoogleスプレッドシートでデータをやり取りしても、LOOKUP関数の数式はそのまま動作します。</p>



<p class="wp-block-paragraph">互換性の高さは、検索関数の中でもLOOKUPの強みのひとつです。</p>



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



<p class="wp-block-paragraph">スプレッドシートのLOOKUP関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は <code>=LOOKUP(検索キー, 検索範囲, 結果範囲)</code> の3引数が基本</li><li>近似一致専用のため、検索範囲は<strong>昇順に並べ替え済み</strong>が前提</li><li>ランク判定や料金区分など、近似一致が必要な場面で活躍する</li><li>完全一致で検索したい場合は<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>や<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>を使う</li><li>「最後に一致した値を取得する」テクニックはLOOKUP関数ならではの活用法</li><li><a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>とセットで使うとエラー対策も安心</li></ul>



<p class="wp-block-paragraph">まずはランク判定のような近似一致の場面で使ってみてください。VLOOKUPとの使い分けがわかると、検索関数の選択肢がグッと広がりますよ。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-vlookup-function/">スプレッドシートのVLOOKUP関数の使い方｜別シート参照・エラー対処まで解説</a></li><li><a href="https://mashukabu.com/spreadsheet-hlookup-function/">スプレッドシートのHLOOKUP関数の使い方｜横方向検索の基本と応用</a></li><li><a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方｜VLOOKUPとの違いも解説</a></li><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方｜行列指定で値取得</a></li><li><a href="https://mashukabu.com/spreadsheet-match-function/">スプレッドシートのMATCH関数の使い方｜相対位置を返す</a></li><li><a href="https://mashukabu.com/spreadsheet-iferror-function/">スプレッドシートのIFERROR関数の使い方｜エラー処理</a></li><li><a href="https://mashukabu.com/spreadsheet-if-function/">スプレッドシートのIF関数の使い方｜条件分岐の基本</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-lookup-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのIF・IFS・IFERROR・IFNAの使い分け｜選び方フロー付き</title>
		<link>https://mashukabu.com/excel-if-ifs-iferror-ifna-comparison/</link>
					<comments>https://mashukabu.com/excel-if-ifs-iferror-ifna-comparison/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 20 Mar 2026 23:09:12 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[IFERROR関数]]></category>
		<category><![CDATA[IFNA関数]]></category>
		<category><![CDATA[IFS関数]]></category>
		<category><![CDATA[IF関数]]></category>
		<category><![CDATA[エラー処理]]></category>
		<category><![CDATA[使い分け]]></category>
		<category><![CDATA[条件分岐]]></category>
		<category><![CDATA[比較]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4707</guid>

					<description><![CDATA[ExcelのIF・IFS・IFERROR・IFNAの4関数を「条件の数」「エラー対処が目的か」の2軸で整理。選び方フローチャートとIF→IFSの書き換え例で、どの関数を使うべきか一目でわかります。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「IF関数は使えるけど、IFSとかIFERRORとか似た名前の関数がいくつもあって、どれを使えばいいかわからない」と感じたこと、ありませんか？</p>



<p class="wp-block-paragraph">間違った関数を選ぶと、数式がムダに複雑になったり、本来気づくべきエラーを見落としてしまったりします。</p>



<p class="wp-block-paragraph">この記事では、IF・IFS・IFERROR・IFNAの4つの関数を「条件分岐か、エラー処理か」「条件の数はいくつか」という2つの軸でスッキリ整理します。記事の最後には選び方フローチャートも用意したので、もう迷うことはありませんよ。</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">IF系4関数の違い【結論から】</a></li><li><a href="#toc2" tabindex="0">IF関数の基本と使いどころ</a><ol><li><a href="#toc3" tabindex="0">構文</a></li><li><a href="#toc4" tabindex="0">使用例</a></li><li><a href="#toc5" tabindex="0">IFが向いているケース</a></li></ol></li><li><a href="#toc6" tabindex="0">IFS関数の基本と使いどころ</a><ol><li><a href="#toc7" tabindex="0">構文</a></li><li><a href="#toc8" tabindex="0">IFネストからIFSへの書き換え</a></li><li><a href="#toc9" tabindex="0">IF と IFS、どちらを使う？</a></li></ol></li><li><a href="#toc10" tabindex="0">IFERROR関数の基本と使いどころ</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><li><a href="#toc14" tabindex="0">IFERRORの注意点</a></li></ol></li><li><a href="#toc15" tabindex="0">IFNA関数の基本と使いどころ</a><ol><li><a href="#toc16" tabindex="0">構文</a></li><li><a href="#toc17" tabindex="0">IFERRORとIFNAの使い分け</a></li><li><a href="#toc18" tabindex="0">使用例</a></li></ol></li><li><a href="#toc19" tabindex="0">4関数の選び方フローチャート</a></li><li><a href="#toc20" tabindex="0">実務でよく使う組み合わせパターン</a><ol><li><a href="#toc21" tabindex="0">パターン1: IFS + IFERROR（条件分岐 + エラー処理）</a></li><li><a href="#toc22" tabindex="0">パターン2: IF + AND/OR（複合条件の分岐）</a></li><li><a href="#toc23" tabindex="0">パターン3: VLOOKUP + IFNA（検索 + エラー処理）</a></li></ol></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">IF系4関数の違い【結論から】</span></h2>



<p class="wp-block-paragraph">まず結論です。4つの関数は大きく2グループに分かれます。</p>



<ul class="wp-block-list"><li><strong>条件分岐グループ</strong>: IF、IFS</li><li><strong>エラー処理グループ</strong>: IFERROR、IFNA</li></ul>



<p class="wp-block-paragraph">「条件によって表示を切り替えたい」ならIF or IFS、「数式のエラーを処理したい」ならIFERROR or IFNAです。</p>



<p class="wp-block-paragraph">以下の比較表で、それぞれの特徴を一目で確認できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>IF</th><th>IFS</th><th>IFERROR</th><th>IFNA</th></tr></thead><tbody><tr><td>役割</td><td>条件分岐（1条件）</td><td>条件分岐（複数条件）</td><td>エラー処理（全種）</td><td>エラー処理（#N/Aのみ）</td></tr><tr><td>構文</td><td><code>=IF(条件, 真, 偽)</code></td><td><code>=IFS(条件1, 値1, ...)</code></td><td><code>=IFERROR(式, エラー時)</code></td><td><code>=IFNA(式, NA時)</code></td></tr><tr><td>対応バージョン</td><td>全バージョン</td><td>2019 / 365</td><td>2007以降</td><td>2013以降</td></tr><tr><td>ネスト</td><td>最大64段（実用は3段）</td><td>不要（最大127条件）</td><td>不要</td><td>不要</td></tr><tr><td>おすすめ場面</td><td>条件が1〜2個</td><td>条件が3個以上</td><td>計算エラー全般</td><td>VLOOKUP等の検索エラー</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この表だけで判断できることも多いですが、ここから各関数の使いどころをもう少し掘り下げていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc2">IF関数の基本と使いどころ</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>は、Excelの条件分岐でもっとも基本的な関数です。「もし〜なら A、そうでなければ B」という処理を1行で書けます。</p>



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



<pre class="wp-block-code"><code>=IF(論理式, 値が真の場合, [値が偽の場合])</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>説明</th></tr></thead><tbody><tr><td>論理式</td><td>必須</td><td>TRUE/FALSEに評価される条件式</td></tr><tr><td>値が真の場合</td><td>必須</td><td>条件がTRUEのときの返し値</td></tr><tr><td>値が偽の場合</td><td>省略可</td><td>条件がFALSEのときの返し値（省略時はFALSE）</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">たとえば、売上が目標を超えたら「達成」と表示する場合はこう書きます。</p>



<pre class="wp-block-code"><code>=IF(B2&gt;=100000, &quot;達成&quot;, &quot;未達&quot;)</code></pre>



<p class="wp-block-paragraph">条件が1つだけのシンプルな場面なら、IF関数が最適です。</p>



<h3 class="wp-block-heading"><span id="toc5">IFが向いているケース</span></h3>



<ul class="wp-block-list"><li>「合格 / 不合格」のような二択判定</li><li><a href="https://mashukabu.com/excel-function-howto-use-and/">AND関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-or/">OR関数</a>と組み合わせた複合条件（条件は1セットだが、判定要素が複数ある場合）</li><li>Excel 2016以前のファイルでも使う必要がある場合</li></ul>



<pre class="wp-block-code"><code>=IF(AND(B2&gt;=100000, C2&gt;=50), &quot;S評価&quot;, &quot;対象外&quot;)</code></pre>



<p class="wp-block-paragraph">上の式は「売上10万以上 かつ 件数50以上」を同時に満たすかどうかを判定しています。条件の数は1つ（ANDで束ねた複合条件）なので、IFで十分対応できます。</p>



<h2 class="wp-block-heading"><span id="toc6">IFS関数の基本と使いどころ</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-ifs/">IFS関数</a>は、複数の条件を上から順に判定して、最初にTRUEになった条件の値を返す関数です。IFのネスト（入れ子）を使わずに、3つ以上の条件分岐を書けるのが最大のメリットです。</p>



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



<pre class="wp-block-code"><code>=IFS(条件1, 値1, 条件2, 値2, ..., TRUE, &quot;それ以外&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>説明</th></tr></thead><tbody><tr><td>条件1</td><td>必須</td><td>1つ目の条件式</td></tr><tr><td>値1</td><td>必須</td><td>条件1がTRUEのときの返し値</td></tr><tr><td>条件2, 値2 &#8230;</td><td>省略可</td><td>2つ目以降の条件と値のペア（最大127組）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは、最後の条件を <code>TRUE</code> にすること。これが「どの条件にも当てはまらない場合」のデフォルト値（IFでいう「偽の場合」）になります。この <code>TRUE</code> を省略すると、どの条件にも合わないときに#N/Aエラーが出るので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc8">IFネストからIFSへの書き換え</span></h3>



<p class="wp-block-paragraph">IFを3段ネストした式と、IFSに書き換えた式を並べてみましょう。</p>



<pre class="wp-block-code"><code>【Before: IFネスト3段】
=IF(A2&gt;=90, &quot;優&quot;, IF(A2&gt;=70, &quot;良&quot;, IF(A2&gt;=50, &quot;可&quot;, &quot;不可&quot;)))

【After: IFS】
=IFS(A2&gt;=90, &quot;優&quot;, A2&gt;=70, &quot;良&quot;, A2&gt;=50, &quot;可&quot;, TRUE, &quot;不可&quot;)</code></pre>



<p class="wp-block-paragraph">どうでしょうか。IFS版のほうがカッコの入れ子がなくなり、条件と結果のペアが横に並んでいて読みやすいですよね。</p>



<h3 class="wp-block-heading"><span id="toc9">IF と IFS、どちらを使う？</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>判断基準</th><th>IF</th><th>IFS</th></tr></thead><tbody><tr><td>条件の数</td><td>1〜2個</td><td>3個以上</td></tr><tr><td>可読性</td><td>ネスト2段までなら十分</td><td>3段以上で圧倒的に見やすい</td></tr><tr><td>バージョン互換</td><td>全バージョンOK</td><td>2019 / 365 のみ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>迷ったときの目安</strong>: 「IF文のカッコが3段以上になりそうだな」と思ったら、IFS関数への切り替えを検討してみてください。ただし、社内で古いバージョンのExcel（2016以前）を使っている人がいる場合は、IFネストのほうが安全です。</p>



<h2 class="wp-block-heading"><span id="toc10">IFERROR関数の基本と使いどころ</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>は、数式がエラーを返した場合に代替値を表示する関数です。条件分岐ではなく、<strong>エラー処理</strong>が目的です。</p>



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



<pre class="wp-block-code"><code>=IFERROR(値, エラーの場合の値)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>エラーを確認する数式</td></tr><tr><td>エラーの場合の値</td><td>必須</td><td>エラーだったときに返す値</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc12">対処できるエラーの種類</span></h3>



<p class="wp-block-paragraph">IFERRORは以下の<strong>7種類すべてのエラー</strong>を一括で処理します。</p>



<p class="wp-block-paragraph"><code>#N/A</code> <code>#VALUE!</code> <code>#REF!</code> <code>#DIV/0!</code> <code>#NUM!</code> <code>#NAME?</code> <code>#NULL!</code></p>



<p class="wp-block-paragraph">エラーの種類については「<a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧</a>」で詳しく解説しています。</p>



<h3 class="wp-block-heading"><span id="toc13">使用例</span></h3>



<p class="wp-block-paragraph">もっともよく使うのは、割り算のゼロ除算エラーを回避するパターンです。</p>



<pre class="wp-block-code"><code>=IFERROR(B2/C2, 0)</code></pre>



<p class="wp-block-paragraph">C2が0やブランクのとき、#DIV/0!エラーのかわりに 0 を返します。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP</a>で検索値が見つからなかったときのエラーを回避するパターンもよく使います。</p>



<pre class="wp-block-code"><code>=IFERROR(VLOOKUP(A2, 商品マスタ, 2, FALSE), &quot;該当なし&quot;)</code></pre>



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



<p class="wp-block-paragraph">IFERRORは便利ですが、<strong>すべてのエラーを消してしまう</strong>点に注意が必要です。</p>



<p class="wp-block-paragraph">たとえば、数式にスペルミスがあって <code>#NAME?</code> エラーが出ているのに、IFERRORでラップしているとエラーが見えなくなります。本来は修正すべきバグが隠れてしまうわけです。</p>



<p class="wp-block-paragraph">「エラーが出たらとりあえずIFERRORで囲む」というクセがある人は、この後紹介するIFNA関数のほうが安全かもしれません。</p>



<h2 class="wp-block-heading"><span id="toc15">IFNA関数の基本と使いどころ</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-ifna/">IFNA関数</a>は、<strong>#N/Aエラーだけ</strong>を処理する関数です。それ以外のエラー（#VALUE!や#REF!など）はそのまま表示します。</p>



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



<pre class="wp-block-code"><code>=IFNA(値, NAの場合の値)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>#N/Aを確認する数式</td></tr><tr><td>NAの場合の値</td><td>必須</td><td>#N/Aだったときに返す値</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc17">IFERRORとIFNAの使い分け</span></h3>



<p class="wp-block-paragraph">IFERRORとIFNAの違いを、もう少し具体的に見てみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>IFERROR</th><th>IFNA</th></tr></thead><tbody><tr><td>処理するエラー</td><td>全7種（#N/A, #VALUE!, #REF! 等）</td><td>#N/Aのみ</td></tr><tr><td>数式バグの検出</td><td>隠してしまう可能性あり</td><td>バグはエラーとして表示される</td></tr><tr><td>おすすめ場面</td><td>割り算のゼロ除算、計算エラー全般</td><td>VLOOKUP/XLOOKUPなどの検索関数</td></tr><tr><td>対応バージョン</td><td>Excel 2007以降</td><td>Excel 2013以降</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">使用例</span></h3>



<p class="wp-block-paragraph">VLOOKUPで「検索値が見つからない」場合だけ処理したいなら、IFNAが最適です。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, 商品マスタ, 2, FALSE), &quot;未登録&quot;)</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>も#N/Aエラーを返すので、同じようにIFNAで処理できます。</p>



<pre class="wp-block-code"><code>=IFNA(XLOOKUP(A2, 商品名, 単価), &quot;未登録&quot;)</code></pre>



<p class="wp-block-paragraph">もしこの数式にセル参照のミス（#REF!）や型の不一致（#VALUE!）があった場合、IFNAなら<strong>エラーが表示される</strong>ので問題にすぐ気づけます。IFERRORだとこれらのバグも「未登録」と表示されてしまい、発見が遅れます。</p>



<p class="wp-block-paragraph"><strong>まとめると</strong>: 検索関数のエラー処理にはIFNAのほうが安全です。計算式のゼロ除算など、#N/A以外のエラーも処理したい場面ではIFERRORを使いましょう。</p>



<h2 class="wp-block-heading"><span id="toc19">4関数の選び方フローチャート</span></h2>



<p class="wp-block-paragraph">ここまで紹介した4関数を、どの場面でどれを使うか迷わず選べるフローチャートにまとめました。</p>



<p class="wp-block-paragraph">以下の順番で質問に答えていくだけで、使うべき関数がわかります。</p>



<p class="wp-block-paragraph"><strong>Q1. やりたいことは何ですか？</strong></p>



<ul class="wp-block-list"><li><strong>条件によって表示を切り替えたい</strong> → Q2へ</li><li><strong>数式のエラーを処理したい</strong> → Q3へ</li></ul>



<p class="wp-block-paragraph"><strong>Q2. 条件はいくつありますか？</strong></p>



<ul class="wp-block-list"><li><strong>1〜2個</strong> → <strong>IF関数</strong> を使う<ul><li>AND/ORで複合条件にしてもOK</li></ul></li><li><strong>3個以上</strong> → <strong>IFS関数</strong> を使う<ul><li>ただしExcel 2016以前ではIFネストを使う</li></ul></li></ul>



<p class="wp-block-paragraph"><strong>Q3. 処理したいエラーの種類は？</strong></p>



<ul class="wp-block-list"><li><strong>#N/Aだけ処理したい</strong>（VLOOKUP/XLOOKUP等の検索エラー） → <strong>IFNA関数</strong> を使う<ul><li>数式のバグを見逃さない安全な選択</li></ul></li><li><strong>すべてのエラーを処理したい</strong>（#DIV/0!や#VALUE!も含む） → <strong>IFERROR関数</strong> を使う<ul><li>ただし数式バグも隠れるリスクに注意</li></ul></li></ul>



<p class="wp-block-paragraph">このフローに従えば、4つの関数で迷うことはなくなるはずです。</p>



<h2 class="wp-block-heading"><span id="toc20">実務でよく使う組み合わせパターン</span></h2>



<p class="wp-block-paragraph">最後に、IF系関数を組み合わせて使う実務パターンを3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc21">パターン1: IFS + IFERROR（条件分岐 + エラー処理）</span></h3>



<p class="wp-block-paragraph">計算結果を条件分岐したいけど、元の計算式がエラーになる可能性がある場合に使います。</p>



<pre class="wp-block-code"><code>=IFERROR(IFS(B2/C2&gt;=1.2, &quot;大幅増&quot;, B2/C2&gt;=1, &quot;微増&quot;, TRUE, &quot;減少&quot;), &quot;データなし&quot;)</code></pre>



<p class="wp-block-paragraph">この式は「前年比（B2/C2）」に応じた評価を出しつつ、C2がゼロだった場合のエラーもカバーしています。</p>



<h3 class="wp-block-heading"><span id="toc22">パターン2: IF + AND/OR（複合条件の分岐）</span></h3>



<p class="wp-block-paragraph">「AかつB」や「AまたはB」の条件判定は、IF関数にAND/OR関数を組み合わせて書きます。</p>



<pre class="wp-block-code"><code>=IF(AND(B2&gt;=&quot;2026/4/1&quot;, B2&lt;=&quot;2026/4/30&quot;), &quot;4月分&quot;, &quot;対象外&quot;)
=IF(OR(C2=&quot;東京&quot;, C2=&quot;大阪&quot;, C2=&quot;名古屋&quot;), &quot;主要拠点&quot;, &quot;その他&quot;)</code></pre>



<p class="wp-block-paragraph">AND/ORの詳しい使い方は「<a href="https://mashukabu.com/excel-function-howto-use-and/">AND関数の使い方</a>」「<a href="https://mashukabu.com/excel-function-howto-use-or/">OR関数の使い方</a>」をご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc23">パターン3: VLOOKUP + IFNA（検索 + エラー処理）</span></h3>



<p class="wp-block-paragraph">VLOOKUPで検索値が見つからないときだけ代替値を返すパターンです。実務でもっとも使用頻度が高い組み合わせのひとつです。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), &quot;価格未設定&quot;)</code></pre>



<p class="wp-block-paragraph">VLOOKUPのかわりにXLOOKUPを使う場合も同じ書き方でOKです。XLOOKUPには第4引数でエラー時の代替値を指定できますが、IFNAで統一しておけば数式のスタイルが揃って管理しやすくなります。</p>



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



<p class="wp-block-paragraph">ExcelのIF系4関数の使い分けをおさらいしましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>役割</th><th>使うべき場面</th></tr></thead><tbody><tr><td>IF</td><td>条件分岐（1〜2条件）</td><td>シンプルな二択・AND/ORとの複合条件</td></tr><tr><td>IFS</td><td>条件分岐（3条件以上）</td><td>ネストを避けたい多段階評価</td></tr><tr><td>IFERROR</td><td>エラー処理（全エラー）</td><td>ゼロ除算・計算エラーの回避</td></tr><tr><td>IFNA</td><td>エラー処理（#N/Aのみ）</td><td>VLOOKUP/XLOOKUPの検索エラー処理</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">判断に迷ったら、本記事のフローチャートに立ち返ってみてください。</p>



<ul class="wp-block-list"><li>やりたいのが<strong>条件分岐</strong>なら → 条件の数でIF or IFSを選ぶ</li><li>やりたいのが<strong>エラー処理</strong>なら → 対象エラーの種類でIFERROR or IFNAを選ぶ</li></ul>



<p class="wp-block-paragraph">まずは自分の数式が「条件分岐」と「エラー処理」のどちらなのかを見極めるところから始めてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-if-ifs-iferror-ifna-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excelの丸め関数10種を完全比較｜使い分け早見表</title>
		<link>https://mashukabu.com/excel-rounding-functions-comparison/</link>
					<comments>https://mashukabu.com/excel-rounding-functions-comparison/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 12:36:50 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CEILING関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[FLOOR関数]]></category>
		<category><![CDATA[INT関数]]></category>
		<category><![CDATA[MROUND関数]]></category>
		<category><![CDATA[ROUNDDOWN関数]]></category>
		<category><![CDATA[ROUNDUP関数]]></category>
		<category><![CDATA[ROUND関数]]></category>
		<category><![CDATA[TRUNC関数]]></category>
		<category><![CDATA[丸め関数]]></category>
		<category><![CDATA[使い分け]]></category>
		<category><![CDATA[端数処理]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4032</guid>

					<description><![CDATA[ExcelのROUND・ROUNDDOWN・INT・TRUNC・CEILING・FLOORなど丸め関数10種を一覧表で比較。「四捨五入か切り捨てか」「桁数か倍数か」「負の数が出るか」の3ステップで迷わず関数を選べます。やりがちな間違い3選と消費税・勤怠・見積のシーン別おすすめ付きです。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Excelで端数を処理したいとき、「丸め関数が多すぎて、どれを使えばいいかわからない」と感じたことはありませんか。</p>



<p class="wp-block-paragraph">ROUND、INT、CEILING&#8230;似た名前の関数が10種類もあります。なんとなく選んで使っていると、負の数で計算がずれたり、想定外のエラーが出ることも。</p>



<p class="wp-block-paragraph">この記事では、Excelの丸め関数10種の<strong>使い分け</strong>を早見表で一覧比較します。「3ステップの選び方」と「やりがちな間違い3選」も紹介するので、もう関数選びで迷いませんよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-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">【早見表】10種の丸め関数を一覧で比較</a><ol><li><a href="#toc2" tabindex="0">丸め方向別に整理する</a></li></ol></li><li><a href="#toc3" tabindex="0">Excelの丸め関数を3ステップで使い分ける</a><ol><li><a href="#toc4" tabindex="0">ステップ1：丸める方向を決める</a></li><li><a href="#toc5" tabindex="0">ステップ2：桁数指定か倍数指定かを確認する</a></li><li><a href="#toc6" tabindex="0">ステップ3：負の数が出る可能性があるか確認する</a></li></ol></li><li><a href="#toc7" tabindex="0">似ている関数の違いを深掘り比較</a><ol><li><a href="#toc8" tabindex="0">ROUNDDOWN vs INT：負の数で結果が変わる</a></li><li><a href="#toc9" tabindex="0">TRUNC vs ROUNDDOWN：引数省略できる・できないの差</a></li><li><a href="#toc10" tabindex="0">CEILING vs CEILING.MATH：負の倍数の向きが逆になる</a></li><li><a href="#toc11" tabindex="0">MROUND vs ROUND：倍数丸めか桁数丸めかを選ぶ</a></li></ol></li><li><a href="#toc12" tabindex="0">やりがちな間違い3選</a><ol><li><a href="#toc13" tabindex="0">間違い1：INTで消費税を計算 → 負の数で誤差が出る</a></li><li><a href="#toc14" tabindex="0">間違い2：表示形式で丸めた気になる → 計算は元の値のまま</a></li><li><a href="#toc15" tabindex="0">間違い3：CEILINGに負の倍数を渡す → エラーになる</a></li></ol></li><li><a href="#toc16" tabindex="0">シーン別おすすめ関数まとめ</a><ol><li><a href="#toc17" tabindex="0">消費税・請求金額の計算</a></li><li><a href="#toc18" tabindex="0">勤怠・時間集計（15分・30分単位）</a></li><li><a href="#toc19" tabindex="0">見積金額の千円・万円単位丸め</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a><ol><li><a href="#toc21" tabindex="0">Excel関数の関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【早見表】10種の丸め関数を一覧で比較</span></h2>



<p class="wp-block-paragraph">まずは結論です。10関数の役割と特徴をまとめました。</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-round/">ROUND</a></td><td>四捨五入</td><td>桁数で指定</td><td>小数の四捨五入全般</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-roundup/">ROUNDUP</a></td><td>切り上げ</td><td>桁数で指定</td><td>見積もりの安全側丸め</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-rounddown/">ROUNDDOWN</a></td><td>切り捨て</td><td>桁数で指定</td><td>消費税の切り捨て</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-mround/">MROUND</a></td><td>四捨五入</td><td>倍数で指定</td><td>50円・100円単位の丸め</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-floor/">FLOOR</a></td><td>切り捨て</td><td>倍数で指定</td><td>時間の切り捨て（15分単位）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-ceiling/">CEILING</a></td><td>切り上げ</td><td>倍数で指定</td><td>時間の切り上げ（30分単位）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-int/">INT</a></td><td>切り捨て</td><td>整数（固定）</td><td>割り算の整数部分を取得</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-trunc/">TRUNC</a></td><td>切り捨て</td><td>桁数で指定</td><td>小数部分を削除</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-odd/">ODD</a></td><td>切り上げ</td><td>奇数（固定）</td><td>奇数枠の確保</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-even/">EVEN</a></td><td>切り上げ</td><td>偶数（固定）</td><td>偶数枠の確保</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">大きく分けると「丸め方向」と「基準単位」の2軸で整理できます。この2つを押さえれば、10関数の使い分けはシンプルです。</p>



<h3 class="wp-block-heading"><span id="toc2">丸め方向別に整理する</span></h3>



<p class="wp-block-paragraph">10関数は3グループに分かれます。</p>



<ul class="wp-block-list"><li><strong>四捨五入</strong>: ROUND、MROUND</li><li><strong>切り捨て</strong>: ROUNDDOWN、INT、TRUNC、FLOOR</li><li><strong>切り上げ</strong>: ROUNDUP、CEILING、ODD、EVEN</li></ul>



<p class="wp-block-paragraph">切り捨てグループだけ4つもあるのがやっかいですよね。でも安心してください。この4つの違いは、次のセクションの「3ステップ」で整理します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>ペア記事のご案内</strong></p><p>シーン別にNG数式とOK数式を並べて比較したい方は「<a href="https://mashukabu.com/excel-rounding-practical-guide/">Excel端数処理の関数選び｜消費税・時間・金額のシーン別早見表</a>」もあわせてどうぞ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc3">Excelの丸め関数を3ステップで使い分ける</span></h2>



<p class="wp-block-paragraph">早見表で全体像はつかめたと思います。ここからは、実務で「どの関数を使うか」を迷わず決める3ステップを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc4">ステップ1：丸める方向を決める</span></h3>



<p class="wp-block-paragraph">最初に確認するのは「四捨五入・切り捨て・切り上げのどれか」です。</p>



<ul class="wp-block-list"><li>金額を安全に見積もりたい → <strong>切り上げ</strong></li><li>消費税を安く計算したい → <strong>切り捨て</strong></li><li>統計値を一般的に丸めたい → <strong>四捨五入</strong></li></ul>



<p class="wp-block-paragraph">丸め方向が決まるだけで、候補はぐっと絞れます。</p>



<h3 class="wp-block-heading"><span id="toc5">ステップ2：桁数指定か倍数指定かを確認する</span></h3>



<p class="wp-block-paragraph">次に「何の単位で丸めるか」を確認します。</p>



<figure class="wp-block-table"><table><thead><tr><th>指定方法</th><th>対応関数</th><th>使い分けの例</th></tr></thead><tbody><tr><td><strong>桁数指定</strong>（小数点からの位置）</td><td>ROUND / ROUNDUP / ROUNDDOWN / TRUNC</td><td>「小数第2位で」「1の位で」</td></tr><tr><td><strong>倍数指定</strong>（任意の数の倍数）</td><td>MROUND / FLOOR / CEILING</td><td>「50円単位で」「15分単位で」</td></tr><tr><td><strong>固定</strong>（引数不要）</td><td>INT / ODD / EVEN</td><td>「整数に」「奇数に」</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは「桁数のマイナス指定が苦手なら倍数指定を使う」ことです。たとえば100円単位の切り捨ては、次の2通りで書けます。</p>



<pre class="wp-block-code"><code>=ROUNDDOWN(1234, -2)</code></pre>



<pre class="wp-block-code"><code>=FLOOR(1234, 100)</code></pre>



<p class="wp-block-paragraph">どちらも結果は <code>1200</code> です。FLOORのほうが「100の倍数に切り捨て」と読めるので、数式の意図が伝わりやすいですよ。</p>



<p class="wp-block-paragraph">ちなみに、ROUND系の桁数でマイナスを指定すると、整数部分を丸められます。<code>-1</code> なら1の位、<code>-2</code> なら10の位が対象です。</p>



<h3 class="wp-block-heading"><span id="toc6">ステップ3：負の数が出る可能性があるか確認する</span></h3>



<p class="wp-block-paragraph">ここが見落としやすいポイントです。正の数では同じ結果を返す関数が、負の数で差が出ます。</p>



<pre class="wp-block-code"><code>=ROUNDDOWN(-4.3, 0)  → -4（0方向に切り捨て）
=INT(-4.3)           → -5（負の無限大方向に切り捨て）</code></pre>



<p class="wp-block-paragraph">返品処理や差額計算で負の数が出る可能性があるなら、INTではなくROUNDDOWNを使うのが安全です。</p>



<p class="wp-block-paragraph">また、FLOOR/CEILINGで負の数を扱うときは注意が必要です。数値と基準値の符号が異なると <code>#NUM!</code> エラーになります。Excel 2013以降のFLOOR.MATH/CEILING.MATHなら、この制約がありません。詳しくは「<a href="https://mashukabu.com/excel-floor-ceiling-math-precise-comparison/">FLOOR/CEILING系6関数の違い｜MATH・PRECISEの使い分け</a>」で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc7">似ている関数の違いを深掘り比較</span></h2>



<p class="wp-block-paragraph">「名前が似ている関数の違いがよくわからない」という声は多いです。ここでは特に紛らわしい4つのペアを比較します。</p>



<h3 class="wp-block-heading"><span id="toc8">ROUNDDOWN vs INT：負の数で結果が変わる</span></h3>



<p class="wp-block-paragraph">正の数では、ROUNDDOWNもINTも同じ結果です。違いが出るのは負の数のときだけです。</p>



<pre class="wp-block-code"><code>=ROUNDDOWN(4.3, 0)   → 4
=INT(4.3)             → 4（同じ）

=ROUNDDOWN(-4.3, 0)  → -4（0方向に丸める）
=INT(-4.3)           → -5（負の無限大方向に丸める）</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>ROUNDDOWN</th><th>INT</th></tr></thead><tbody><tr><td>正の数</td><td>0方向に切り捨て</td><td>0方向に切り捨て</td></tr><tr><td>負の数</td><td>0方向に切り捨て</td><td><strong>負の無限大方向</strong>に切り捨て</td></tr><tr><td>桁数指定</td><td>必須</td><td>なし（常に整数）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">INTは「数直線で左に進む」イメージです。<code>-4.3</code> の左隣の整数は <code>-5</code> なので、INTは <code>-5</code> を返します。ROUNDDOWNは「0に近づく」イメージで、<code>-4</code> を返します。</p>



<p class="wp-block-paragraph">消費税や金額計算で負の値が出る可能性があるなら、ROUNDDOWNを選んでください。</p>



<h3 class="wp-block-heading"><span id="toc9">TRUNC vs ROUNDDOWN：引数省略できる・できないの差</span></h3>



<p class="wp-block-paragraph">この2つは正の数でも負の数でも同じ結果を返します。違いは「桁数引数を省略できるかどうか」だけです。</p>



<pre class="wp-block-code"><code>=TRUNC(3.75)         → 3（桁数省略OK、0扱い）
=ROUNDDOWN(3.75, 0)  → 3（桁数0を必ず指定）</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>TRUNC</th><th>ROUNDDOWN</th></tr></thead><tbody><tr><td>桁数の省略</td><td>可能（省略時は0）</td><td>不可（必須）</td></tr><tr><td>丸め方向</td><td>0方向に切り捨て</td><td>0方向に切り捨て</td></tr><tr><td>負の数の結果</td><td>同じ</td><td>同じ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「整数に切り捨てたいだけ」ならTRUNCのほうが短く書けます。桁数を指定して丸めたいならどちらでもOKです。チームで統一するなら、ROUNDDOWNのほうが他のROUND系と揃って読みやすいでしょう。</p>



<h3 class="wp-block-heading"><span id="toc10">CEILING vs CEILING.MATH：負の倍数の向きが逆になる</span></h3>



<p class="wp-block-paragraph">旧CEILINGは、負の数を扱うときにクセがあります。</p>



<pre class="wp-block-code"><code>=CEILING(-3.75, -1)  → -3（0方向に切り上げ）
=CEILING(-3.75, 1)   → #NUM!エラー</code></pre>



<p class="wp-block-paragraph">旧CEILINGでは、負の数に正の基準値を渡すとエラーになります。基準値の符号を数値に合わせる必要があるんです。</p>



<p class="wp-block-paragraph">CEILING.MATH（Excel 2013以降）なら、この制約が解消されています。</p>



<pre class="wp-block-code"><code>=CEILING.MATH(-3.75, 1)     → -3（0方向に切り上げ）
=CEILING.MATH(-3.75, 1, 1)  → -4（負の無限大方向に切り上げ）</code></pre>



<p class="wp-block-paragraph">CEILING.MATHには3つ目のMode引数があります。Mode引数で負の数の丸め方向を制御できるのが最大の違いです。</p>



<p class="wp-block-paragraph">Excel 2013以降を使っているなら、CEILING.MATHに乗り換えるのがおすすめです。FLOORも同様に、FLOOR.MATHが上位互換にあたります。詳しくは「<a href="https://mashukabu.com/excel-floor-ceiling-math-precise-comparison/">FLOOR/CEILING系6関数の違い｜MATH・PRECISEの使い分け</a>」をご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc11">MROUND vs ROUND：倍数丸めか桁数丸めかを選ぶ</span></h3>



<p class="wp-block-paragraph">MROUNDとROUNDはどちらも四捨五入ですが、基準の指定方法が違います。</p>



<pre class="wp-block-code"><code>=ROUND(1234, -2)    → 1200（10の位を四捨五入）
=MROUND(1234, 100)  → 1200（100の倍数に四捨五入）</code></pre>



<p class="wp-block-paragraph">結果は同じでも、数式の読みやすさが変わります。「100円単位で丸める」ならMROUNDのほうが直感的です。</p>



<p class="wp-block-paragraph">ただしMROUNDには注意点があります。数値と基準値の符号が異なると <code>#NUM!</code> エラーになります。また基準値に0を渡しても <code>#NUM!</code> エラーです。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>ROUND</th><th>MROUND</th></tr></thead><tbody><tr><td>基準の指定</td><td>桁数（0, 1, -1&#8230;）</td><td>倍数（50, 100, 0.5&#8230;）</td></tr><tr><td>負の数</td><td>エラーなし</td><td>符号不一致で#NUM!</td></tr><tr><td>基準値0</td><td>常に0を返す</td><td>#NUM!エラー</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">安全性を優先するならROUND、読みやすさを優先するならMROUNDです。</p>



<h2 class="wp-block-heading"><span id="toc12">やりがちな間違い3選</span></h2>



<p class="wp-block-paragraph">ここからは、丸め関数でよくあるミスを紹介します。知っておくだけでトラブルを防げますよ。</p>



<h3 class="wp-block-heading"><span id="toc13">間違い1：INTで消費税を計算 → 負の数で誤差が出る</span></h3>



<p class="wp-block-paragraph">消費税の切り捨てに <code>=INT(金額*0.1)</code> を使っている方、意外と多いです。正の数なら問題ありませんが、返品で金額がマイナスになると結果がずれます。</p>



<pre class="wp-block-code"><code>=INT(1000*0.1)    → 100（正しい）
=INT(-1000*0.1)   → -100（端数なしなのでずれない）

=INT(-1055*0.1)   → -106（ずれる！）
=ROUNDDOWN(-1055*0.1, 0) → -105（正しい）</code></pre>



<p class="wp-block-paragraph">INTは負の無限大方向に丸めるため、端数があると1ずれます。<code>-1055 * 0.1 = -105.5</code> のように端数が出ると、INTは <code>-106</code> を返してしまいます。消費税計算にはROUNDDOWNを使いましょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>インボイス制度と端数処理</strong></p><p>インボイス制度では、端数処理の方法（切り上げ・切り捨て・四捨五入）は事業者が自由に選べます。ただし、一の適格請求書につき税率ごとに1回のみ端数処理できる点に注意してください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc14">間違い2：表示形式で丸めた気になる → 計算は元の値のまま</span></h3>



<p class="wp-block-paragraph">セルの書式設定で小数点以下の表示桁数を変えても、計算に使われる値は変わりません。</p>



<p class="wp-block-paragraph">たとえば、セルA1に <code>3.456</code> と入力して、表示形式を「小数点以下1桁」にします。画面上は <code>3.5</code> と表示されますが、計算には <code>3.456</code> が使われます。</p>



<pre class="wp-block-code"><code>A1の値: 3.456（表示は「3.5」）
=A1*100 → 345.6（350ではない！）</code></pre>



<p class="wp-block-paragraph">計算結果そのものを丸めるには、ROUND関数で値を変換してください。</p>



<pre class="wp-block-code"><code>=ROUND(3.456, 1)  → 3.5（計算値も3.5になる）
=ROUND(3.456, 1)*100 → 350（意図どおり）</code></pre>



<p class="wp-block-paragraph">「表示が丸まっているから大丈夫」は危険です。計算で使うセルには必ずROUND関数を入れましょう。</p>



<h3 class="wp-block-heading"><span id="toc15">間違い3：CEILINGに負の倍数を渡す → エラーになる</span></h3>



<p class="wp-block-paragraph">旧CEILINGとFLOORには「符号の制約」があります。正の数値に負の基準値を渡すとエラーです。</p>



<pre class="wp-block-code"><code>=CEILING(7.5, -1)   → #NUM!エラー
=FLOOR(7.5, -1)     → #NUM!エラー</code></pre>



<p class="wp-block-paragraph">また、基準値に0を渡すと <code>#DIV/0!</code> エラーになります。</p>



<pre class="wp-block-code"><code>=CEILING(7.5, 0)  → #DIV/0!エラー
=FLOOR(7.5, 0)    → #DIV/0!エラー</code></pre>



<p class="wp-block-paragraph">対策は2つあります。</p>



<ol class="wp-block-list"><li><strong>基準値の符号を数値に合わせる</strong>: 正の数には正の基準値、負の数には負の基準値を使う</li><li><strong>CEILING.MATH/FLOOR.MATHに切り替える</strong>: Excel 2013以降なら符号制約がない</li></ol>



<p class="wp-block-paragraph">Excel 2013以降を使えるなら、CEILING.MATH/FLOOR.MATHへの乗り換えがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc16">シーン別おすすめ関数まとめ</span></h2>



<p class="wp-block-paragraph">ここまでの知識を踏まえて、実務シーン別のおすすめ関数を整理します。</p>



<h3 class="wp-block-heading"><span id="toc17">消費税・請求金額の計算</span></h3>



<p class="wp-block-paragraph">消費税の端数処理は、社内ルールで「切り捨て」「四捨五入」「切り上げ」のどれかが決まっています。</p>



<figure class="wp-block-table"><table><thead><tr><th>ルール</th><th>おすすめ関数</th><th>数式例</th></tr></thead><tbody><tr><td>切り捨て</td><td><a href="https://mashukabu.com/excel-function-howto-use-rounddown/">ROUNDDOWN</a></td><td><code>=ROUNDDOWN(A1*0.1, 0)</code></td></tr><tr><td>四捨五入</td><td><a href="https://mashukabu.com/excel-function-howto-use-round/">ROUND</a></td><td><code>=ROUND(A1*0.1, 0)</code></td></tr><tr><td>切り上げ</td><td><a href="https://mashukabu.com/excel-function-howto-use-roundup/">ROUNDUP</a></td><td><code>=ROUNDUP(A1*0.1, 0)</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">INTではなくROUNDDOWNを使うのがポイントです。返品や値引きで税額がマイナスになっても正しく計算できます。</p>



<h3 class="wp-block-heading"><span id="toc18">勤怠・時間集計（15分・30分単位）</span></h3>



<p class="wp-block-paragraph">勤怠管理では「15分単位」「30分単位」で丸めるケースが多いです。倍数指定ができるCEILING/FLOOR/MROUNDの出番です。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>おすすめ関数</th><th>数式例</th></tr></thead><tbody><tr><td>15分単位に切り上げ</td><td><a href="https://mashukabu.com/excel-function-howto-use-ceiling/">CEILING</a></td><td><code>=CEILING(A1,"0:15")</code></td></tr><tr><td>15分単位に切り捨て</td><td><a href="https://mashukabu.com/excel-function-howto-use-floor/">FLOOR</a></td><td><code>=FLOOR(A1,"0:15")</code></td></tr><tr><td>30分単位に四捨五入</td><td><a href="https://mashukabu.com/excel-function-howto-use-mround/">MROUND</a></td><td><code>=MROUND(A1,"0:30")</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">時間の基準値は <code>"0:15"</code> のようにダブルクォーテーションで囲みます。そのまま入力するとエラーになることがあるので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc19">見積金額の千円・万円単位丸め</span></h3>



<p class="wp-block-paragraph">見積書や報告書で「千円単位」「万円単位」に金額を丸めたい場面です。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>おすすめ関数</th><th>数式例</th></tr></thead><tbody><tr><td>千円未満を切り捨て</td><td><a href="https://mashukabu.com/excel-function-howto-use-floor/">FLOOR</a></td><td><code>=FLOOR(A1, 1000)</code></td></tr><tr><td>千円未満を切り上げ</td><td><a href="https://mashukabu.com/excel-function-howto-use-ceiling/">CEILING</a></td><td><code>=CEILING(A1, 1000)</code></td></tr><tr><td>万円単位に四捨五入</td><td><a href="https://mashukabu.com/excel-function-howto-use-round/">ROUND</a></td><td><code>=ROUND(A1, -4)</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">FLOORやCEILINGなら <code>=FLOOR(A1, 1000)</code> と書けます。ROUNDDOWNなら <code>=ROUNDDOWN(A1, -3)</code> です。チームで共有するなら、読みやすいほうを選んでくださいね。</p>



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



<p class="wp-block-paragraph">Excelの丸め関数10種の使い分けを解説しました。最後に選び方の3ステップをおさらいします。</p>



<ol class="wp-block-list"><li><strong>丸め方向を決める</strong>: 四捨五入 → ROUND系 / 切り捨て → ROUNDDOWN系 / 切り上げ → ROUNDUP系</li><li><strong>基準単位を決める</strong>: 桁数指定 → ROUND系 / 倍数指定 → MROUND・FLOOR・CEILING</li><li><strong>負の数をチェック</strong>: 負の数が出るなら → INTは避けてROUNDDOWN、旧FLOOR/CEILINGはMATH版に</li></ol>



<figure class="wp-block-table"><table><thead><tr><th>分類</th><th>関数</th><th>ひと言まとめ</th></tr></thead><tbody><tr><td>四捨五入</td><td>ROUND / MROUND</td><td>桁数ならROUND、倍数ならMROUND</td></tr><tr><td>切り捨て</td><td>ROUNDDOWN / INT / TRUNC / FLOOR</td><td>桁数ならROUNDDOWN、倍数ならFLOOR</td></tr><tr><td>切り上げ</td><td>ROUNDUP / CEILING / ODD / EVEN</td><td>桁数ならROUNDUP、倍数ならCEILING</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">各関数の詳しい使い方は、以下の個別記事で解説しています。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-round/">ROUND関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-roundup/">ROUNDUP関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-rounddown/">ROUNDDOWN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-mround/">MROUND関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-floor/">FLOOR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-ceiling/">CEILING関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-int/">INT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-trunc/">TRUNC関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-odd/">ODD関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-even/">EVEN関数の使い方</a></li></ul>



<p class="wp-block-paragraph">FLOOR/CEILING系の新旧6関数の違いは「<a href="https://mashukabu.com/excel-floor-ceiling-math-precise-comparison/">FLOOR/CEILING系6関数の違い｜MATH・PRECISEの使い分け</a>」で詳しく比較しています。</p>



<h3 class="wp-block-heading"><span id="toc21">Excel関数の関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-rounding-practical-guide/">Excel端数処理の関数選び｜消費税・時間・金額のシーン別早見表</a></li><li><a href="https://mashukabu.com/excel-if-ifs-iferror-ifna-comparison/">IF/IFS/IFERROR/IFNAの使い分け</a></li><li><a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP/XLOOKUP/INDEX MATCHの使い分け</a></li><li><a href="https://mashukabu.com/excel-sumif-sumifs-sumproduct-comparison/">SUMIF/SUMIFS/SUMPRODUCTの使い分け</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-rounding-functions-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SUMIF・SUMIFS・SUMPRODUCTの使い分け｜条件付き集計を完全攻略</title>
		<link>https://mashukabu.com/excel-sumif-sumifs-sumproduct-comparison/</link>
					<comments>https://mashukabu.com/excel-sumif-sumifs-sumproduct-comparison/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 17 Mar 2026 12:22:04 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[OR条件]]></category>
		<category><![CDATA[SUMIF]]></category>
		<category><![CDATA[SUMIFS]]></category>
		<category><![CDATA[SUMPRODUCT]]></category>
		<category><![CDATA[使い分け]]></category>
		<category><![CDATA[条件付き集計]]></category>
		<category><![CDATA[比較]]></category>
		<category><![CDATA[複数条件]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4015</guid>

					<description><![CDATA[ExcelのSUMIF・SUMIFS・SUMPRODUCTの違いと使い分けを比較表で解説。条件の数・OR条件・日付範囲・ワイルドカードの4観点から最適な関数を選べるフローチャート付き。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「SUMIF・SUMIFS・SUMPRODUCTのどれを使えばいいの？」。そんな悩み、ありませんか？</p>



<p class="wp-block-paragraph">3つの関数は似ているようで、得意な場面がそれぞれ違います。間違った関数を選ぶと、数式がムダに複雑になります。</p>



<p class="wp-block-paragraph">この記事では4つの観点で3関数を比較します。選び方フローチャートも用意したので、もう迷いませんよ。</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">SUMIF・SUMIFS・SUMPRODUCTの違い【結論】</a><ol><li><a href="#toc2" tabindex="0">3関数の機能比較一覧表</a></li><li><a href="#toc3" tabindex="0">選択フローチャート</a></li></ol></li><li><a href="#toc4" tabindex="0">SUMIF関数の特徴と基本の使い方</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">使用例</a></li><li><a href="#toc7" tabindex="0">得意な場面・苦手な場面</a></li></ol></li><li><a href="#toc8" tabindex="0">SUMIFS関数の特徴と基本の使い方</a><ol><li><a href="#toc9" tabindex="0">基本構文</a></li><li><a href="#toc10" tabindex="0">使用例</a></li><li><a href="#toc11" tabindex="0">得意な場面・苦手な場面</a></li></ol></li><li><a href="#toc12" tabindex="0">SUMPRODUCT関数の特徴と基本の使い方</a><ol><li><a href="#toc13" tabindex="0">基本構文</a></li><li><a href="#toc14" tabindex="0">使用例</a></li><li><a href="#toc15" tabindex="0">得意な場面・苦手な場面</a></li></ol></li><li><a href="#toc16" tabindex="0">条件付き集計の4つの観点で徹底比較</a><ol><li><a href="#toc17" tabindex="0">1. 条件の数による使い分け</a></li><li><a href="#toc18" tabindex="0">2. OR条件への対応</a></li><li><a href="#toc19" tabindex="0">3. 日付範囲の指定</a></li><li><a href="#toc20" tabindex="0">4. ワイルドカードの使い方</a></li><li><a href="#toc21" tabindex="0">4観点の比較まとめ表</a></li></ol></li><li><a href="#toc22" tabindex="0">SUMIFSからSUMPRODUCTに条件付き集計を乗り換えるタイミング</a><ol><li><a href="#toc23" tabindex="0">OR条件が必要になったとき</a></li><li><a href="#toc24" tabindex="0">複数列の掛け算と条件付き集計を同時にしたいとき</a></li></ol></li><li><a href="#toc25" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc26" tabindex="0">まとめ</a><ol><li><a href="#toc27" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SUMIF・SUMIFS・SUMPRODUCTの違い【結論】</span></h2>



<p class="wp-block-paragraph">まず結論です。3つの関数は「条件の複雑さ」で使い分けます。</p>



<ul class="wp-block-list"><li><strong>SUMIF</strong>: 条件が1つだけのシンプルな集計</li><li><strong>SUMIFS</strong>: 条件が2つ以上のAND条件（「かつ」）の集計</li><li><strong>SUMPRODUCT</strong>: OR条件（「または」）や計算式を含む高度な集計</li></ul>



<p class="wp-block-paragraph">条件が1つならSUMIF、2つ以上の「かつ」ならSUMIFSです。「または」が必要ならSUMPRODUCTを使います。</p>



<h3 class="wp-block-heading"><span id="toc2">3関数の機能比較一覧表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th><a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF</a></th><th><a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS</a></th><th><a href="https://mashukabu.com/excel-function-howto-use-sumproduct/">SUMPRODUCT</a></th></tr></thead><tbody><tr><td>条件の数</td><td>1つだけ</td><td>複数（最大127組）</td><td>複数（実質無制限）</td></tr><tr><td>AND条件（かつ）</td><td>&#8212;</td><td>対応</td><td>対応</td></tr><tr><td>OR条件（または）</td><td>&#8212;</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><tr><td>計算式を条件に使う</td><td>非対応</td><td>非対応</td><td>対応</td></tr><tr><td>対応バージョン</td><td>Excel 2003以降</td><td>Excel 2007以降</td><td>Excel 2003以降</td></tr><tr><td>読み方</td><td>サムイフ</td><td>サムイフエス</td><td>サムプロダクト</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">選択フローチャート</span></h3>



<p class="wp-block-paragraph">どの関数を使うか迷ったら、次の順番で判断してみてください。</p>



<ol class="wp-block-list"><li><strong>条件は1つだけ？</strong> → <strong>SUMIF</strong> を使う</li><li><strong>条件が2つ以上で、すべて「かつ」？</strong> → <strong>SUMIFS</strong> を使う</li><li><strong>「または」が含まれる？</strong> → <strong>SUMPRODUCT</strong> を使う</li><li><strong>計算結果を条件にしたい？</strong> → <strong>SUMPRODUCT</strong> を使う</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>迷ったらSUMIFSから試そう</strong></p><p>SUMIFS関数は条件1つでも使えます。「条件が増えるかもしれない」場面では、最初からSUMIFSを使っておくと後から条件を追加しやすいですよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">SUMIF関数の特徴と基本の使い方</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF関数</a>は、条件を1つ指定して合計する関数です。</p>



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



<pre class="wp-block-code"><code>=SUMIF(範囲, 検索条件, [合計範囲])</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>範囲</td><td>必須</td><td>条件を検索するセル範囲</td></tr><tr><td>検索条件</td><td>必須</td><td>合計対象を絞り込む条件</td></tr><tr><td>合計範囲</td><td>任意</td><td>実際に合計するセル範囲（省略時は「範囲」を合計）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc6">使用例</span></h3>



<p class="wp-block-paragraph">次の売上データで「りんご」の合計を求めます。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（商品名）</th><th>B列（金額）</th></tr></thead><tbody><tr><td>りんご</td><td>100</td></tr><tr><td>みかん</td><td>200</td></tr><tr><td>りんご</td><td>150</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=SUMIF(A2:A4,&quot;りんご&quot;,B2:B4)</code></pre>



<p class="wp-block-paragraph">結果は 100 + 150 = <strong>250</strong> です。</p>



<h3 class="wp-block-heading"><span id="toc7">得意な場面・苦手な場面</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>得意</th><th>苦手</th></tr></thead><tbody><tr><td>条件1つの合計</td><td>複数条件の組み合わせ</td></tr><tr><td>ワイルドカードで部分一致</td><td>OR条件（「または」）</td></tr><tr><td>比較演算子（>=、<>）</td><td>計算式を条件にする</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">条件が2つ以上になったら<a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数</a>に切り替えましょう。</p>



<h2 class="wp-block-heading"><span id="toc8">SUMIFS関数の特徴と基本の使い方</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数</a>は、複数の条件をすべて満たすデータだけを合計する関数です。</p>



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



<pre class="wp-block-code"><code>=SUMIFS(合計対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>合計対象範囲</td><td>必須</td><td>合計したい数値の範囲</td></tr><tr><td>条件範囲1</td><td>必須</td><td>1つ目の条件を判定する範囲</td></tr><tr><td>条件1</td><td>必須</td><td>1つ目の条件</td></tr><tr><td>条件範囲2, 条件2</td><td>任意</td><td>2つ目以降の条件ペア（最大127組）</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>引数の順番に注意</strong></p><p>SUMIFは「範囲→条件→合計範囲」、SUMIFSは「合計範囲→条件範囲→条件」の順です。合計範囲の位置が逆なのでつまずきやすいポイントです。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc10">使用例</span></h3>



<p class="wp-block-paragraph">次の売上データで「営業部の、4月の売上合計」を求めます。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（日付）</th><th>B列（部署）</th><th>C列（金額）</th></tr></thead><tbody><tr><td>2024/4/1</td><td>営業部</td><td>50000</td></tr><tr><td>2024/4/3</td><td>総務部</td><td>30000</td></tr><tr><td>2024/4/5</td><td>営業部</td><td>80000</td></tr><tr><td>2024/5/2</td><td>営業部</td><td>60000</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=SUMIFS(C2:C5, B2:B5, &quot;営業部&quot;, A2:A5, &quot;&gt;=&quot;&amp;DATE(2024,4,1), A2:A5, &quot;&lt;&quot;&amp;DATE(2024,5,1))</code></pre>



<p class="wp-block-paragraph">B列が「営業部」かつA列が4月の行だけを合計します。結果は 50000 + 80000 = <strong>130,000</strong> です。</p>



<h3 class="wp-block-heading"><span id="toc11">得意な場面・苦手な場面</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>得意</th><th>苦手</th></tr></thead><tbody><tr><td>複数条件のAND合計</td><td>OR条件（「または」）</td></tr><tr><td>ワイルドカードで部分一致</td><td>計算式を条件にする</td></tr><tr><td>日付範囲指定</td><td>配列の掛け算</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「営業部<strong>または</strong>総務部」のように、OR条件が必要な場合はSUMPRODUCT関数の出番です。</p>



<h2 class="wp-block-heading"><span id="toc12">SUMPRODUCT関数の特徴と基本の使い方</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sumproduct/">SUMPRODUCT関数</a>は、配列の掛け算と合計を1つの数式で処理する関数です。条件式を組み込めば条件付き集計もできます。</p>



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



<pre class="wp-block-code"><code>=SUMPRODUCT(配列1, [配列2], [配列3], ...)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>配列1</td><td>必須</td><td>計算対象の配列またはセル範囲</td></tr><tr><td>配列2, &#8230;</td><td>任意</td><td>掛け合わせる追加の配列（最大255個）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">条件付き集計のときは、条件式を <code>(条件)*</code> の形で掛け算に含めます。条件に合わない行は0になり、自動的に除外されます。</p>



<h3 class="wp-block-heading"><span id="toc14">使用例</span></h3>



<p class="wp-block-paragraph">先ほどと同じデータで「営業部の売上合計」を求めます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;営業部&quot;)*C2:C5)</code></pre>



<p class="wp-block-paragraph"><code>(B2:B5="営業部")</code> が各行でTRUE(1) / FALSE(0)を返します。FALSEの行は0倍されて自動的に除外されます。</p>



<h3 class="wp-block-heading"><span id="toc15">得意な場面・苦手な場面</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>得意</th><th>苦手</th></tr></thead><tbody><tr><td>OR条件（「または」）</td><td>ワイルドカード（*、?）</td></tr><tr><td>計算式を条件にする</td><td>部分一致検索</td></tr><tr><td>配列の掛け算+合計</td><td>SUMIFSより数式が長い</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ワイルドカードを使いたい場合は、SUMIF/SUMIFSのほうが手軽に書けます。</p>



<h2 class="wp-block-heading"><span id="toc16">条件付き集計の4つの観点で徹底比較</span></h2>



<p class="wp-block-paragraph">ここからは、実務でよく使う4つのシーンごとに、3関数の具体的な数式を比較します。</p>



<p class="wp-block-paragraph">次のサンプルデータを使います。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（日付）</th><th>B列（部署）</th><th>C列（商品）</th><th>D列（金額）</th></tr></thead><tbody><tr><td>2024/4/1</td><td>営業部</td><td>プランA</td><td>50000</td></tr><tr><td>2024/4/3</td><td>総務部</td><td>プランB</td><td>30000</td></tr><tr><td>2024/4/5</td><td>営業部</td><td>プランA</td><td>80000</td></tr><tr><td>2024/4/10</td><td>総務部</td><td>プランC</td><td>45000</td></tr><tr><td>2024/5/2</td><td>営業部</td><td>プランB</td><td>60000</td></tr><tr><td>2024/5/8</td><td>総務部</td><td>プランA</td><td>35000</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc17">1. 条件の数による使い分け</span></h3>



<p class="wp-block-paragraph"><strong>条件1つ</strong>: 「営業部」の合計</p>



<pre class="wp-block-code"><code>=SUMIF(B2:B7,&quot;営業部&quot;,D2:D7)
=SUMIFS(D2:D7,B2:B7,&quot;営業部&quot;)
=SUMPRODUCT((B2:B7=&quot;営業部&quot;)*D2:D7)</code></pre>



<p class="wp-block-paragraph">3つとも結果は同じ <strong>190,000</strong> です。条件が1つならSUMIFが一番シンプルですね。</p>



<p class="wp-block-paragraph"><strong>条件2つ</strong>: 「営業部」かつ「プランA」の合計</p>



<pre class="wp-block-code"><code>=SUMIFS(D2:D7,B2:B7,&quot;営業部&quot;,C2:C7,&quot;プランA&quot;)
=SUMPRODUCT((B2:B7=&quot;営業部&quot;)*(C2:C7=&quot;プランA&quot;)*D2:D7)</code></pre>



<p class="wp-block-paragraph">結果は <strong>130,000</strong> です。SUMIF関数は条件が1つだけなので使えません。SUMIFSなら条件ペアを並べるだけです。</p>



<h3 class="wp-block-heading"><span id="toc18">2. OR条件への対応</span></h3>



<p class="wp-block-paragraph"><strong>「営業部」または「総務部」の合計</strong>（この例では全部署が対象になりますが、3部署以上あるケースを想定してください）</p>



<p class="wp-block-paragraph">SUMIFSには「または」を直接指定する方法がありません。対処法は2つあります。</p>



<p class="wp-block-paragraph"><strong>方法1: SUMIFS関数を足し算する</strong></p>



<pre class="wp-block-code"><code>=SUMIFS(D2:D7,B2:B7,&quot;営業部&quot;)+SUMIFS(D2:D7,B2:B7,&quot;総務部&quot;)</code></pre>



<p class="wp-block-paragraph">条件が2つ程度ならこの書き方でも問題ありません。ただし3つ以上になると数式が長くなります。</p>



<p class="wp-block-paragraph"><strong>方法2: SUMPRODUCT関数を使う</strong></p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B7=&quot;営業部&quot;)+(B2:B7=&quot;総務部&quot;))*D2:D7)</code></pre>



<p class="wp-block-paragraph"><code>+</code> でOR条件をつなげるだけです。条件が増えても数式の構造は変わりません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>SUMPRODUCTのOR条件の仕組み</strong></p><p><code>(条件1)+(条件2)</code> は、どちらかがTRUE(1)なら合計が1以上になります。これを集計範囲と掛けることで、いずれかの条件に一致する行が集計対象になります。ただしSUMPRODUCTのOR条件では、両方の条件に一致する行が二重カウントされる可能性があります。重複を防ぐには <code>((条件1)+(条件2)>0)</code> と書くのが安全です。</p></blockquote>



<p class="wp-block-paragraph"><strong>AND + OR の組み合わせ</strong>: 「（営業部または総務部）かつプランA」の合計</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B7=&quot;営業部&quot;)+(B2:B7=&quot;総務部&quot;))*(C2:C7=&quot;プランA&quot;)*D2:D7)</code></pre>



<p class="wp-block-paragraph">このような複合条件はSUMIFSだけでは書けません。SUMPRODUCT関数の出番です。</p>



<h3 class="wp-block-heading"><span id="toc19">3. 日付範囲の指定</span></h3>



<p class="wp-block-paragraph"><strong>2024年4月1日から4月30日までの合計</strong></p>



<p class="wp-block-paragraph">3関数とも日付範囲の指定に対応しています。</p>



<pre class="wp-block-code"><code>=SUMIFS(D2:D7,A2:A7,&quot;&gt;=&quot;&amp;DATE(2024,4,1),A2:A7,&quot;&lt;&quot;&amp;DATE(2024,5,1))
=SUMPRODUCT((A2:A7&gt;=DATE(2024,4,1))*(A2:A7&lt;DATE(2024,5,1))*D2:D7)</code></pre>



<p class="wp-block-paragraph">SUMIF関数で日付範囲を指定する場合は、2つのSUMIFの引き算になります。</p>



<pre class="wp-block-code"><code>=SUMIF(A2:A7,&quot;&lt;&quot;&amp;DATE(2024,5,1),D2:D7)-SUMIF(A2:A7,&quot;&lt;&quot;&amp;DATE(2024,4,1),D2:D7)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>日付範囲指定はSUMIFSが一番シンプル</strong></p><p>日付範囲の指定では、SUMIFSが「以上」「未満」を条件ペアとして書けるので最も読みやすいです。日付の計算方法について詳しく知りたい方は、<a href="https://mashukabu.com/excel-function-howto-use-date/">DATE関数の使い方</a>も参考にしてみてください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc20">4. ワイルドカードの使い方</span></h3>



<p class="wp-block-paragraph"><strong>「プラン」で始まる商品の合計</strong></p>



<pre class="wp-block-code"><code>=SUMIF(C2:C7,&quot;プラン*&quot;,D2:D7)
=SUMIFS(D2:D7,C2:C7,&quot;プラン*&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <strong>300,000</strong>（全行が該当）です。</p>



<p class="wp-block-paragraph">SUMPRODUCT関数ではワイルドカードが使えません。代わりにFIND関数やSEARCH関数を組み合わせます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(ISNUMBER(FIND(&quot;プラン&quot;,C2:C7))*D2:D7)</code></pre>



<p class="wp-block-paragraph">ワイルドカードを使った部分一致の集計は、SUMIF/SUMIFSのほうが圧倒的にシンプルですね。</p>



<h3 class="wp-block-heading"><span id="toc21">4観点の比較まとめ表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>シーン</th><th>おすすめ関数</th><th>理由</th></tr></thead><tbody><tr><td>条件1つ</td><td>SUMIF</td><td>引数が少なくシンプル</td></tr><tr><td>複数条件（AND）</td><td>SUMIFS</td><td>条件ペアを並べるだけ</td></tr><tr><td>OR条件（または）</td><td>SUMPRODUCT</td><td><code>+</code> で条件をつなげるだけ</td></tr><tr><td>AND + OR の複合条件</td><td>SUMPRODUCT</td><td><code>*</code> と <code>+</code> で自由に組める</td></tr><tr><td>日付範囲</td><td>SUMIFS</td><td>以上・未満の条件ペアで読みやすい</td></tr><tr><td>ワイルドカード（部分一致）</td><td>SUMIF / SUMIFS</td><td>SUMPRODUCT非対応</td></tr><tr><td>計算結果を条件にする</td><td>SUMPRODUCT</td><td>配列で計算式が使える</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc22">SUMIFSからSUMPRODUCTに条件付き集計を乗り換えるタイミング</span></h2>



<p class="wp-block-paragraph">SUMIFSで集計していたけど、要件が変わって対応できなくなった。そんなときがSUMPRODUCTの出番です。</p>



<h3 class="wp-block-heading"><span id="toc23">OR条件が必要になったとき</span></h3>



<p class="wp-block-paragraph">典型的な移行シナリオです。</p>



<p class="wp-block-paragraph"><strong>Before（SUMIFSの足し算）</strong>:</p>



<pre class="wp-block-code"><code>=SUMIFS(D2:D7,B2:B7,&quot;営業部&quot;,C2:C7,&quot;プランA&quot;)
+SUMIFS(D2:D7,B2:B7,&quot;営業部&quot;,C2:C7,&quot;プランB&quot;)
+SUMIFS(D2:D7,B2:B7,&quot;営業部&quot;,C2:C7,&quot;プランC&quot;)</code></pre>



<p class="wp-block-paragraph">プランが3つなので3行になっています。プランが増えるたびに行が増えて管理が大変です。</p>



<p class="wp-block-paragraph"><strong>After（SUMPRODUCTに乗り換え）</strong>:</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B7=&quot;営業部&quot;)*((C2:C7=&quot;プランA&quot;)+(C2:C7=&quot;プランB&quot;)+(C2:C7=&quot;プランC&quot;))*D2:D7)</code></pre>



<p class="wp-block-paragraph">1つの数式にまとまりました。AND条件（営業部）は <code>*</code>、OR条件（プランA/B/C）は <code>+</code> でつなぎます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>乗り換えの目安</strong></p><p>OR条件が2つ以下ならSUMIFSの足し算でも管理できます。3つ以上になったらSUMPRODUCTに切り替えるのがおすすめです。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc24">複数列の掛け算と条件付き集計を同時にしたいとき</span></h3>



<p class="wp-block-paragraph">「単価 x 数量」の合計を条件付きで出したい場面です。</p>



<figure class="wp-block-table"><table><thead><tr><th>B列（部署）</th><th>C列（単価）</th><th>D列（数量）</th></tr></thead><tbody><tr><td>営業部</td><td>1000</td><td>50</td></tr><tr><td>総務部</td><td>2000</td><td>30</td></tr><tr><td>営業部</td><td>1500</td><td>20</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>SUMIFS関数の場合</strong>: 作業列が必要</p>



<pre class="wp-block-code"><code>E2セル: =C2*D2（作業列で単価x数量を計算）
集計: =SUMIFS(E2:E4,B2:B4,&quot;営業部&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>SUMPRODUCT関数の場合</strong>: 作業列なし</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B4=&quot;営業部&quot;)*C2:C4*D2:D4)</code></pre>



<p class="wp-block-paragraph">作業列を使わずに1つの数式で完結できるのがSUMPRODUCTの強みです。</p>



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



<p class="wp-block-paragraph">3関数で共通して起きやすいエラーをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>結果が0になる</td><td>条件の文字列に余分なスペース</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>でスペース除去</td></tr><tr><td>結果が0になる</td><td>全角・半角の不一致</td><td>ASC関数/JIS関数で統一</td></tr><tr><td>結果が0になる</td><td>数値が文字列として保存されている</td><td><a href="https://mashukabu.com/excel-function-howto-use-value/">VALUE関数</a>で変換</td></tr><tr><td>#VALUE!エラー</td><td>範囲のサイズ（行数）が不一致</td><td>すべての範囲を同じ行数に揃える</td></tr><tr><td>#VALUE!エラー</td><td>検索条件が255文字を超えている</td><td>条件を短くするかセル参照に変更</td></tr><tr><td>期待値と合わない</td><td>SUMIFSの引数順を間違えている</td><td>合計範囲が<strong>最初</strong>の引数か確認</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>引数の順番ミスに注意</strong></p><p>SUMIFは「範囲→条件→合計範囲」、SUMIFSは「<strong>合計範囲</strong>→条件範囲→条件」です。SUMIF関数に慣れた方がSUMIFSを使い始めるとき、合計範囲の位置を間違えやすいので気をつけてください。</p></blockquote>



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



<p class="wp-block-paragraph">SUMIF・SUMIFS・SUMPRODUCTの使い分けをおさらいしましょう。</p>



<ul class="wp-block-list"><li><strong>SUMIF</strong>: 条件1つのシンプルな集計に最適</li><li><strong>SUMIFS</strong>: 複数条件のAND集計（「かつ」）に最適</li><li><strong>SUMPRODUCT</strong>: OR条件（「または」）や計算式を条件にする高度な集計に最適</li></ul>



<p class="wp-block-paragraph">迷ったときの判断基準は次の3ステップです。</p>



<ol class="wp-block-list"><li>条件が1つ → SUMIF</li><li>条件が2つ以上で「かつ」 → SUMIFS</li><li>「または」が含まれる → SUMPRODUCT</li></ol>



<p class="wp-block-paragraph">まずは<a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF関数</a>から始めましょう。条件が増えたら<a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数</a>へ切り替えます。OR条件が出てきたら<a href="https://mashukabu.com/excel-function-howto-use-sumproduct/">SUMPRODUCT関数</a>の出番です。</p>



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-count-functions-comparison/">COUNT系5関数の違いと使い分け早見表</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sumproduct/">SUMPRODUCT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sum/">SUM関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-countifs/">COUNTIFS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-averageif/">AVERAGEIF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-averageifs/">AVERAGEIFS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-countblank/">COUNTBLANK関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-value/">VALUE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-date/">DATE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function/">Excel関数の基本</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数一覧</a></li><li><a href="https://mashukabu.com/excel-error-value-list/">Excelエラー値一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-sumif-sumifs-sumproduct-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VBA RangeとCellsの違いと使い分け｜実務シナリオ別に選び方を解説</title>
		<link>https://mashukabu.com/excel-vba-range-cells/</link>
					<comments>https://mashukabu.com/excel-vba-range-cells/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 11 Feb 2022 14:30:39 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[1004エラー]]></category>
		<category><![CDATA[Cells]]></category>
		<category><![CDATA[For Each]]></category>
		<category><![CDATA[Range]]></category>
		<category><![CDATA[Resize]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[セル指定]]></category>
		<category><![CDATA[ループ処理]]></category>
		<category><![CDATA[使い分け]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1024</guid>

					<description><![CDATA[VBAのRangeとCellsの違いと使い分けを実務シナリオ別に解説。For文・For Eachループ、Offset・Resizeとの組み合わせ、Range(Cells,Cells)の動的範囲指定、1004エラーの原因と対処まで、コード例つきでわかりやすく説明します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Excel VBAでセルを操作するとき、RangeとCellsのどちらを使うか迷いませんか。</p>



<p class="wp-block-paragraph">書き方がまったく違うので、「結局どっちが正解なの？」と手が止まりがちですよね。使い分けを間違えると、ループ処理でセル番地の文字列結合が必要になったり、別シート操作で1004エラーに悩まされたりします。</p>



<p class="wp-block-paragraph">この記事では、RangeとCellsの違いを比較表で整理し、実務シナリオごとの選び方をお伝えします。Offset・Resizeとの組み合わせやFor Eachでのループ処理も取り上げるので、読み終わるころには「この場面ならこっち」と迷わず選べるようになりますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>VBAを初めて触る方は、先に「<a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">VBE画面の見方</a>」をチェックしておくとスムーズです。</p></blockquote>




  <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">RangeとCellsの違いを一覧でおさらい</a><ol><li><a href="#toc2" tabindex="0">Range：アドレス直書きでわかりやすい</a></li><li><a href="#toc3" tabindex="0">Cells：行番号・列番号で指定できる</a></li></ol></li><li><a href="#toc4" tabindex="0">VBA Cellsを使うべき場面</a><ol><li><a href="#toc5" tabindex="0">For文でループするとき</a></li><li><a href="#toc6" tabindex="0">行列を動的に計算したいとき</a></li></ol></li><li><a href="#toc7" tabindex="0">VBA Rangeを使うべき場面</a><ol><li><a href="#toc8" tabindex="0">セルアドレスが固定のとき</a></li><li><a href="#toc9" tabindex="0">名前付き範囲を指定するとき</a></li></ol></li><li><a href="#toc10" tabindex="0">For Eachで範囲内のセルを一括処理する</a><ol><li><a href="#toc11" tabindex="0">For EachとRangeの基本パターン</a></li><li><a href="#toc12" tabindex="0">For EachとCellsの使い分け</a></li><li><a href="#toc13" tabindex="0">For Eachで実務に使えるパターン：条件に合うセルを集計</a></li></ol></li><li><a href="#toc14" tabindex="0">Offset・Resizeで基準セルからの相対指定</a><ol><li><a href="#toc15" tabindex="0">Offset：基準セルから行・列をずらす</a></li><li><a href="#toc16" tabindex="0">Resize：範囲のサイズを変更する</a></li><li><a href="#toc17" tabindex="0">Offset + Resize の組み合わせ：ヘッダーを除外する実例</a></li></ol></li><li><a href="#toc18" tabindex="0">Range(Cells, Cells)の組み合わせ技</a><ol><li><a href="#toc19" tabindex="0">基本構文</a></li><li><a href="#toc20" tabindex="0">開始・終了行を動的に変える実例</a></li></ol></li><li><a href="#toc21" tabindex="0">実務シナリオ別の選択ガイド</a><ol><li><a href="#toc22" tabindex="0">一覧表を上から順に処理する</a></li><li><a href="#toc23" tabindex="0">For Eachで条件付き書式を動的に適用する</a></li><li><a href="#toc24" tabindex="0">可変範囲をまるごとコピーする</a></li><li><a href="#toc25" tabindex="0">集計行をループの外に固定する</a></li><li><a href="#toc26" tabindex="0">シナリオ別まとめ表</a></li></ol></li><li><a href="#toc27" tabindex="0">1004エラーの原因と対処法</a><ol><li><a href="#toc28" tabindex="0">Worksheetオブジェクトの明示</a></li><li><a href="#toc29" tabindex="0">OffsetやResizeでも同じ原則</a></li></ol></li><li><a href="#toc30" tabindex="0">まとめ：迷ったときの使い分け早見表</a><ol><li><a href="#toc31" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">RangeとCellsの違いを一覧でおさらい</span></h2>



<p class="wp-block-paragraph">まず結論から整理しましょう。RangeとCellsはどちらも「セルを指定する方法」ですが、得意な場面が違います。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>Range</th><th>Cells</th></tr></thead><tbody><tr><td>書き方</td><td><code>Range("A1")</code></td><td><code>Cells(1, 1)</code></td></tr><tr><td>指定方法</td><td>アドレス文字列</td><td>行番号・列番号（数値）</td></tr><tr><td>複数セル範囲</td><td><code>Range("A1:C10")</code> で直接指定</td><td>単体では1セルのみ</td></tr><tr><td>名前付き範囲</td><td><code>Range("売上合計")</code> で参照可</td><td>非対応</td></tr><tr><td>変数との相性</td><td>文字列結合が必要</td><td>数値をそのまま渡せる</td></tr><tr><td>ループ処理</td><td>For Eachと好相性</td><td>For文カウンターと好相性</td></tr><tr><td>Offset/Resize</td><td>両方で使える</td><td>両方で使える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ひとことで言えば、「文字列で指定するか、数値で指定するか」の違いです。この違いが使い分けの根拠になっています。</p>



<h3 class="wp-block-heading"><span id="toc2">Range：アドレス直書きでわかりやすい</span></h3>



<p class="wp-block-paragraph">RangeはExcelシート上の「A1」形式をそのまま使えます。普段のExcel操作と同じ感覚なので、直感的に読み書きできるのが強みです。</p>



<pre class="wp-block-code"><code>' 1つのセルに値を入力
Range(&quot;A1&quot;).Value = &quot;こんにちは&quot;

' 範囲をまとめて太字にする
Range(&quot;A1:C10&quot;).Font.Bold = True

' 離れたセルを一括指定
Range(&quot;A1,C3,E5&quot;).Font.Color = vbRed</code></pre>



<p class="wp-block-paragraph">Rangeの詳しい使い方は「<a href="https://mashukabu.com/excel-vba-howto-use-range/">VBA Rangeの使い方</a>」でも解説しています。</p>



<h3 class="wp-block-heading"><span id="toc3">Cells：行番号・列番号で指定できる</span></h3>



<p class="wp-block-paragraph">Cellsは行と列を数値で指定します。「Cells(行, 列)」の形で、列もアルファベットではなく数字で書くのがポイントです。</p>



<pre class="wp-block-code"><code>' A1セル（1行目・1列目）に値を入力
Cells(1, 1).Value = &quot;こんにちは&quot;

' B3セル（3行目・2列目）に値を入力
Cells(3, 2).Value = 100</code></pre>



<p class="wp-block-paragraph">数値だけで指定するので、変数と組み合わせやすいのが最大の強みです。</p>



<h2 class="wp-block-heading"><span id="toc4">VBA Cellsを使うべき場面</span></h2>



<p class="wp-block-paragraph">Cellsが本領を発揮するのは、セルの位置を動的に変えたいときです。</p>



<h3 class="wp-block-heading"><span id="toc5">For文でループするとき</span></h3>



<p class="wp-block-paragraph">Cellsの最大の強みは、変数をそのまま行番号に渡せることです。</p>



<pre class="wp-block-code"><code>' A列の1行目〜10行目に連番を入力
Dim i As Long
For i = 1 To 10
    Cells(i, 1).Value = i
Next i</code></pre>



<p class="wp-block-paragraph">同じ処理をRangeで書くとこうなります。</p>



<pre class="wp-block-code"><code>' Rangeだと文字列結合が必要
Dim i As Long
For i = 1 To 10
    Range(&quot;A&quot; &amp; i).Value = i
Next i</code></pre>



<p class="wp-block-paragraph">動きは同じですが、<code>"A" & i</code> と文字列結合が入ります。列も変数にしたい場合はさらに複雑になるので、ループ処理ではCellsがおすすめです。</p>



<p class="wp-block-paragraph">For文の書き方をもっと知りたい方は「<a href="https://mashukabu.com/excel-vba-howto-use-for/">VBA For文の使い方</a>」もチェックしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc6">行列を動的に計算したいとき</span></h3>



<p class="wp-block-paragraph">行も列も変数で動かしたい場合、Cellsの数値指定が活きます。</p>



<pre class="wp-block-code"><code>' 5×5の掛け算表を作る
Dim r As Long  ' 行カウンター
Dim c As Long  ' 列カウンター
For r = 1 To 5
    For c = 1 To 5
        Cells(r, c).Value = r * c
    Next c
Next r</code></pre>



<p class="wp-block-paragraph">二重ループとの相性は抜群です。Rangeでこれをやると、列番号をアルファベットに変換する処理が必要になり、かなり面倒になります。</p>



<p class="wp-block-paragraph">変数（<code>Dim</code>）の宣言ルールが気になる方は「<a href="https://mashukabu.com/excel-vba-variable-explanation/">変数の使い方とルール</a>」を参照してください。宣言を強制する<a href="https://mashukabu.com/excel-vba-option-explicit/">Option Explicit</a>もあわせて覚えておくと安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc7">VBA Rangeを使うべき場面</span></h2>



<p class="wp-block-paragraph">一方、Rangeが適しているのは「セルの位置が決まっている」場面です。</p>



<h3 class="wp-block-heading"><span id="toc8">セルアドレスが固定のとき</span></h3>



<p class="wp-block-paragraph">操作対象が固定セルなら、Rangeが読みやすいです。</p>



<pre class="wp-block-code"><code>' 決まったセル範囲をクリアする
Range(&quot;A1:D1&quot;).ClearContents

' ヘッダー行を太字にする
Range(&quot;A1:F1&quot;).Font.Bold = True</code></pre>



<p class="wp-block-paragraph">「A1:D1」とそのまま書けるので、コードを読んだ人がすぐに対象範囲を把握できます。可読性の高さがRangeの大きなメリットです。</p>



<h3 class="wp-block-heading"><span id="toc9">名前付き範囲を指定するとき</span></h3>



<p class="wp-block-paragraph">Excelで名前を定義している場合、Rangeから直接参照できます。</p>



<pre class="wp-block-code"><code>' 名前定義「売上合計」の値を取得
Dim total As Long
total = Range(&quot;売上合計&quot;).Value</code></pre>



<p class="wp-block-paragraph">名前付き範囲はCellsでは参照できません。名前定義を使う場面ではRangeの一択になります。</p>



<p class="wp-block-paragraph">セルの位置が変わってもコードを修正しなくて済むので、実務ではとても便利ですよ。なお、RangeやCellsで取得した値をExcel関数で処理したい場合は「<a href="https://mashukabu.com/excel-vba-howto-use-worksheetfunction/">WorksheetFunctionの使い方</a>」もあわせてチェックしてみてください。</p>



<h2 class="wp-block-heading"><span id="toc10">For Eachで範囲内のセルを一括処理する</span></h2>



<p class="wp-block-paragraph">For Each文を使うと、Range内の各セルを1つずつ取り出して処理できます。「何行目か」を自分で管理しなくていいので、コードがシンプルになるのが魅力です。</p>



<h3 class="wp-block-heading"><span id="toc11">For EachとRangeの基本パターン</span></h3>



<pre class="wp-block-code"><code>Sub 空欄セルに初期値を入れる()
    Dim cell As Range
    For Each cell In Range(&quot;B2:B20&quot;)
        If cell.Value = &quot;&quot; Then
            cell.Value = 0
        End If
    Next cell
End Sub</code></pre>



<p class="wp-block-paragraph"><code>For Each cell In Range(...)</code> と書くだけで、範囲内のセルを上から順に処理してくれます。行番号を管理する <code>i</code> 変数が不要なので、コードの見通しがよくなります。</p>



<p class="wp-block-paragraph">For Each文の詳しい使い方は「<a href="https://mashukabu.com/vba-howto-use-for-each-next/">For Eachの使い方</a>」で解説しています。</p>



<h3 class="wp-block-heading"><span id="toc12">For EachとCellsの使い分け</span></h3>



<p class="wp-block-paragraph">For EachとFor文（Cells）のどちらを選ぶかは、「処理中に行番号が必要かどうか」で決まります。</p>



<pre class="wp-block-code"><code>' ケース1: 行番号が不要 → For Each がシンプル
Sub 負の値を赤くする()
    Dim cell As Range
    For Each cell In Range(&quot;C2:C100&quot;)
        If cell.Value &lt; 0 Then
            cell.Font.Color = vbRed
        End If
    Next cell
End Sub

' ケース2: 行番号を使って別列に書き込む → For + Cells が便利
Sub 判定結果を隣の列に出力する()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 3).End(xlUp).Row

    Dim i As Long
    For i = 2 To lastRow
        If Cells(i, 3).Value &gt;= 80 Then
            Cells(i, 4).Value = &quot;合格&quot;
        Else
            Cells(i, 4).Value = &quot;不合格&quot;
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">「同じセルだけ触る処理」ならFor Each、「隣の列や別のセルにも書き込む処理」ならFor + Cellsと覚えておくと迷いません。</p>



<h3 class="wp-block-heading"><span id="toc13">For Eachで実務に使えるパターン：条件に合うセルを集計</span></h3>



<p class="wp-block-paragraph">実務でよくあるのが、範囲内のセルを条件でフィルタしながら集計するパターンです。</p>



<pre class="wp-block-code"><code>Sub 部門別の売上を集計する()
    Dim cell As Range
    Dim totalSales As Long

    ' A列が「営業部」の行だけ、B列の金額を合計
    For Each cell In Range(&quot;A2:A50&quot;)
        If cell.Value = &quot;営業部&quot; Then
            totalSales = totalSales + cell.Offset(0, 1).Value
        End If
    Next cell

    Range(&quot;D1&quot;).Value = &quot;営業部合計&quot;
    Range(&quot;E1&quot;).Value = totalSales
End Sub</code></pre>



<p class="wp-block-paragraph">ここで使っている <code>Offset</code> については、次のセクションで詳しく説明します。</p>



<h2 class="wp-block-heading"><span id="toc14">Offset・Resizeで基準セルからの相対指定</span></h2>



<p class="wp-block-paragraph">RangeやCellsで取得したセルを「起点」として、そこから相対的に位置をずらしたり範囲を広げたりできます。これがOffsetとResizeです。</p>



<h3 class="wp-block-heading"><span id="toc15">Offset：基準セルから行・列をずらす</span></h3>



<p class="wp-block-paragraph"><code>Offset(行方向, 列方向)</code> で、基準セルからの相対位置を指定します。</p>



<pre class="wp-block-code"><code>' A1セルから2行下・1列右 → B3セル
Range(&quot;A1&quot;).Offset(2, 1).Value = &quot;ここはB3&quot;

' 現在のセルの1つ右に値を入力
Cells(5, 1).Offset(0, 1).Value = &quot;B5に入力&quot;</code></pre>



<p class="wp-block-paragraph">行方向の正の値は下、負の値は上。列方向の正の値は右、負の値は左です。</p>



<p class="wp-block-paragraph">Offsetが特に活躍するのは、For Eachループの中で隣のセルにアクセスするときです。</p>



<pre class="wp-block-code"><code>Sub 単価と数量から金額を計算する()
    Dim cell As Range
    ' B列（単価）をループして、C列（数量）と掛けた結果をD列に出力
    For Each cell In Range(&quot;B2:B20&quot;)
        If cell.Value &lt;&gt; &quot;&quot; Then
            cell.Offset(0, 2).Value = cell.Value * cell.Offset(0, 1).Value
        End If
    Next cell
End Sub</code></pre>



<p class="wp-block-paragraph">For Eachでは行番号を直接持たないので、「隣のセル」「2列右のセル」にアクセスするにはOffsetが必須です。この組み合わせは実務で非常によく使います。</p>



<h3 class="wp-block-heading"><span id="toc16">Resize：範囲のサイズを変更する</span></h3>



<p class="wp-block-paragraph"><code>Resize(行数, 列数)</code> で、基準セルから指定した大きさの範囲を作ります。</p>



<pre class="wp-block-code"><code>' A1セルを起点に、5行3列の範囲を選択
Range(&quot;A1&quot;).Resize(5, 3).Select

' ヘッダー行を除いたデータ範囲を取得
Dim dataRange As Range
Set dataRange = Range(&quot;A1&quot;).Resize(10, 4)  ' A1:D10</code></pre>



<p class="wp-block-paragraph">Resizeは「データの先頭セルはわかっているが、範囲の大きさを動的に決めたい」ときに重宝します。</p>



<h3 class="wp-block-heading"><span id="toc17">Offset + Resize の組み合わせ：ヘッダーを除外する実例</span></h3>



<p class="wp-block-paragraph">OffsetとResizeを組み合わせると、「ヘッダー行をスキップしてデータ範囲だけ取得する」といった実務的な操作が1行で書けます。</p>



<pre class="wp-block-code"><code>Sub ヘッダーを除いてデータ範囲に色をつける()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' A1から始まるテーブルのヘッダーを除外して色付け
    ' Offset(1, 0) で1行下にずらし、Resize(lastRow - 1, 4) でデータ行分の範囲を確保
    Range(&quot;A1&quot;).Offset(1, 0).Resize(lastRow - 1, 4).Interior.Color = RGB(230, 240, 255)
End Sub</code></pre>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。Offset(1, 0) でA2に移動し、Resize(lastRow &#8211; 1, 4) でA2からデータ最終行までの4列分を取得しています。</p>



<p class="wp-block-paragraph">Offset・Resizeの詳しい使い方は「<a href="https://mashukabu.com/excel-vba-howto-use-range/">VBA Rangeの使い方</a>」でも解説しています。</p>



<h2 class="wp-block-heading"><span id="toc18">Range(Cells, Cells)の組み合わせ技</span></h2>



<p class="wp-block-paragraph">RangeとCellsは組み合わせて使えます。これを覚えると、動的な範囲指定がぐっと楽になります。</p>



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



<p class="wp-block-paragraph"><code>Range(Cells(開始行, 開始列), Cells(終了行, 終了列))</code> の形で書きます。</p>



<pre class="wp-block-code"><code>' A1からE10までを選択
Range(Cells(1, 1), Cells(10, 5)).Select</code></pre>



<p class="wp-block-paragraph">開始位置も終了位置も数値で制御できるのがポイントです。固定範囲にはRange単体、動的範囲にはこの組み合わせと覚えておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">開始・終了行を動的に変える実例</span></h3>



<p class="wp-block-paragraph">実務で最もよく使うのが、最終行を取得して動的に範囲を決めるパターンです。</p>



<pre class="wp-block-code"><code>Sub 動的範囲に罫線を引く()
    ' A列の最終行を取得
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' A1から最終行のC列まで罫線を引く
    Range(Cells(1, 1), Cells(lastRow, 3)).Borders.LineStyle = xlContinuous
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Cells(Rows.Count, 1).End(xlUp).Row</code> でA列の一番下から上に向かって最終行を探しています。データの件数が増減しても自動で対応できるので、実務では非常に重宝します。</p>



<p class="wp-block-paragraph">最終行の取得方法をもっと詳しく知りたい方は「<a href="https://mashukabu.com/excel-vba-howto-get-lastrow/">最終行を取得する3つの方法</a>」もどうぞ。</p>



<p class="wp-block-paragraph">もうひとつ、可変範囲をコピーする実例も見てみましょう。</p>



<pre class="wp-block-code"><code>Sub データ範囲をコピーして貼り付ける()
    Dim lastRow As Long
    Dim lastCol As Long

    ' データの最終行・最終列を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    lastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    ' データ範囲をまるごとコピー
    Range(Cells(1, 1), Cells(lastRow, lastCol)).Copy

    ' Sheet2のA1に貼り付け
    Sheets(&quot;Sheet2&quot;).Range(&quot;A1&quot;).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
End Sub</code></pre>



<p class="wp-block-paragraph">最終行だけでなく最終列も動的に取得すれば、列が増えても自動で対応できます。</p>



<h2 class="wp-block-heading"><span id="toc21">実務シナリオ別の選択ガイド</span></h2>



<p class="wp-block-paragraph">ここまでの内容を、よくある実務シナリオで整理しましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">一覧表を上から順に処理する</span></h3>



<p class="wp-block-paragraph">請求書データや社員名簿を1行ずつ処理するパターンです。</p>



<pre class="wp-block-code"><code>Sub 一覧表を順に処理する()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Dim i As Long
    For i = 2 To lastRow  ' 2行目から（1行目はヘッダー）
        ' B列が空欄ならスキップ
        If Cells(i, 2).Value &lt;&gt; &quot;&quot; Then
            ' D列に計算結果を入力
            Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">行を変数 <code>i</code> で動かすので<strong>Cells一択</strong>です。「<a href="https://mashukabu.com/excel-vba-howto-use-for/">For文</a>」と「<a href="https://mashukabu.com/vba-howto-use-for-each-next/">For Each</a>」のどちらでもCellsが活躍します。条件分岐の詳しい書き方は「<a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">VBA If文の使い方</a>」も参考にしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc23">For Eachで条件付き書式を動的に適用する</span></h3>



<p class="wp-block-paragraph">For Eachを使えば、セルの値に応じて書式を変えるといった処理もシンプルに書けます。</p>



<pre class="wp-block-code"><code>Sub 売上達成状況に色をつける()
    Dim cell As Range
    For Each cell In Range(&quot;D2:D50&quot;)
        Select Case True
            Case cell.Value &gt;= 1000000
                cell.Interior.Color = RGB(198, 239, 206)  ' 緑（達成）
            Case cell.Value &gt;= 500000
                cell.Interior.Color = RGB(255, 235, 156)  ' 黄（もう少し）
            Case Else
                cell.Interior.Color = RGB(255, 199, 206)  ' 赤（未達）
        End Select
    Next cell
End Sub</code></pre>



<p class="wp-block-paragraph">行番号を使わず「セルそのもの」を操作するだけなので、For Eachが最適です。Select Caseの詳しい書き方は「<a href="https://mashukabu.com/excel-vba-howto-use-select-case/">Select Caseの使い方</a>」もチェックしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc24">可変範囲をまるごとコピーする</span></h3>



<p class="wp-block-paragraph">データの最終行・最終列が変わる範囲を一括操作するパターンです。</p>



<pre class="wp-block-code"><code>Sub 可変範囲を書式設定する()
    Dim lastRow As Long
    Dim lastCol As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    lastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    ' データ範囲全体に背景色をつける
    Range(Cells(2, 1), Cells(lastRow, lastCol)).Interior.Color = RGB(230, 240, 255)
End Sub</code></pre>



<p class="wp-block-paragraph"><strong>Range(Cells, Cells)の組み合わせ</strong>が最適です。開始・終了を変数で制御しつつ、範囲全体をまとめて操作できます。</p>



<h3 class="wp-block-heading"><span id="toc25">集計行をループの外に固定する</span></h3>



<p class="wp-block-paragraph">ヘッダーや集計行など、位置が固定のセルを操作するパターンです。</p>



<pre class="wp-block-code"><code>Sub 集計処理()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' ループ部分はCells
    Dim total As Long
    Dim i As Long
    For i = 2 To lastRow
        total = total + Cells(i, 3).Value
    Next i

    ' 固定セルへの書き込みはRange
    Range(&quot;A1&quot;).Value = &quot;集計結果&quot;
    Range(&quot;B1&quot;).Value = total
End Sub</code></pre>



<p class="wp-block-paragraph"><strong>ループ内はCells、固定セルはRange</strong>と使い分けるのがスマートです。コードの意図が明確になり、後から読んでも何をしているか一目でわかります。</p>



<h3 class="wp-block-heading"><span id="toc26">シナリオ別まとめ表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>シナリオ</th><th>おすすめ</th><th>理由</th></tr></thead><tbody><tr><td>一覧を上から順に処理</td><td>Cells + For文</td><td>行番号を変数で動かす</td></tr><tr><td>範囲内のセルを一括処理</td><td>Range + For Each</td><td>行番号管理が不要でシンプル</td></tr><tr><td>可変範囲を一括操作</td><td>Range(Cells, Cells)</td><td>動的な開始・終了を範囲指定</td></tr><tr><td>固定セルへの読み書き</td><td>Range</td><td>アドレス直書きで可読性が高い</td></tr><tr><td>名前付き範囲の参照</td><td>Range</td><td>Cellsでは名前定義を参照できない</td></tr><tr><td>二重ループ（行×列）</td><td>Cells</td><td>行列ともに数値で制御できる</td></tr><tr><td>隣のセルにアクセス</td><td>Offset</td><td>For Each内で行番号なしに隣接セルを操作</td></tr><tr><td>動的な範囲サイズ変更</td><td>Resize</td><td>基準セルから任意サイズの範囲を作成</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">RangeとCellsの組み合わせで最もハマりやすいのが、実行時エラー1004（「アプリケーション定義またはオブジェクト定義のエラー」）です。</p>



<h3 class="wp-block-heading"><span id="toc28">Worksheetオブジェクトの明示</span></h3>



<p class="wp-block-paragraph">このエラーは、別シートのCellsをRange引数に渡すときに起きます。</p>



<pre class="wp-block-code"><code>' エラーになるコード
Sheets(&quot;Sheet2&quot;).Range(Cells(1, 1), Cells(10, 3)).Select</code></pre>



<p class="wp-block-paragraph">一見すると正しく見えますが、問題があります。<code>Range</code> は Sheet2 を指していますが、<code>Cells</code> はアクティブシートを指しています。シートの参照先がバラバラなのでエラーになるのです。</p>



<p class="wp-block-paragraph">正しくはこう書きます。</p>



<pre class="wp-block-code"><code>' 正しいコード：Withでシートを統一する
With Sheets(&quot;Sheet2&quot;)
    .Range(.Cells(1, 1), .Cells(10, 3)).Select
End With</code></pre>



<p class="wp-block-paragraph">ポイントは <code>.Range</code> と <code>.Cells</code> の先頭にドット（<code>.</code>）をつけることです。ドットをつけると、Withで指定したSheet2のプロパティとして認識されます。</p>



<p class="wp-block-paragraph">ドットを1つでも忘れるとエラーになるので注意してください。</p>



<p class="wp-block-paragraph">もうひとつ、シートを変数に入れて書く方法もあります。</p>



<pre class="wp-block-code"><code>' 変数でシートを指定する方法
Dim ws As Worksheet
Set ws = Sheets(&quot;Sheet2&quot;)
ws.Range(ws.Cells(1, 1), ws.Cells(10, 3)).Select</code></pre>



<p class="wp-block-paragraph">どちらの書き方でもOKです。大事なのは「Range・Cells・すべてのシート参照を揃える」ことです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>1004エラーは実行時に発生するため、コードを書いた時点では気づけません。別シートを操作するコードを書いたら、必ずテスト実行して確認しましょう。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc29">OffsetやResizeでも同じ原則</span></h3>



<p class="wp-block-paragraph">Offset・Resizeを使う場合もシート参照を揃える必要があります。</p>



<pre class="wp-block-code"><code>' NGパターン：シート参照が混在
Sheets(&quot;Sheet2&quot;).Range(&quot;A1&quot;).Offset(1, 0).Resize(10, 3).Value = &quot;&quot;

' OKパターン：Withで統一
With Sheets(&quot;Sheet2&quot;)
    .Range(&quot;A1&quot;).Offset(1, 0).Resize(10, 3).Value = &quot;&quot;
End With</code></pre>



<p class="wp-block-paragraph">Offset・Resizeは基準セルのシートを引き継ぐので、基準となるRange/Cellsのシート指定さえ正しければ問題ありません。Withブロックを使う習慣をつけておくと安全です。</p>



<h2 class="wp-block-heading"><span id="toc30">まとめ：迷ったときの使い分け早見表</span></h2>



<p class="wp-block-paragraph">RangeとCellsの使い分けを最終確認しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>使うもの</th><th>書き方の例</th></tr></thead><tbody><tr><td>固定セルに値を入れる</td><td>Range</td><td><code>Range("A1").Value = 100</code></td></tr><tr><td>名前付き範囲を参照</td><td>Range</td><td><code>Range("売上合計").Value</code></td></tr><tr><td>ループで行を動かす</td><td>Cells</td><td><code>Cells(i, 1).Value</code></td></tr><tr><td>行列ともに変数で動かす</td><td>Cells</td><td><code>Cells(r, c).Value</code></td></tr><tr><td>範囲内のセルを一括処理</td><td>For Each + Range</td><td><code>For Each cell In Range("A1:A10")</code></td></tr><tr><td>隣のセルにアクセス</td><td>Offset</td><td><code>cell.Offset(0, 1).Value</code></td></tr><tr><td>動的なサイズの範囲を作る</td><td>Resize</td><td><code>Range("A2").Resize(lastRow, 4)</code></td></tr><tr><td>動的範囲を一括操作</td><td>Range + Cells</td><td><code>Range(Cells(1,1), Cells(lastRow,3))</code></td></tr><tr><td>別シートのセルを操作</td><td>With + ドット付き</td><td><code>.Range(.Cells(1,1), .Cells(10,3))</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">判断に迷ったら、次の順番で考えてみてください。</p>



<ol class="wp-block-list"><li>名前付き範囲を使う？ → <strong>Range</strong></li><li>セルの位置が固定？ → <strong>Range</strong></li><li>範囲内を順に処理（行番号不要）？ → <strong>For Each + Range</strong></li><li>変数で位置を動かす？ → <strong>Cells</strong></li><li>動的な範囲指定？ → <strong>Range(Cells, Cells)</strong></li><li>基準セルから相対的にずらす？ → <strong>Offset / Resize</strong></li></ol>



<p class="wp-block-paragraph">どちらが正解ということではなく、場面で使い分けるのがベストです。VBAに慣れてくると、これらを自然に組み合わせて使えるようになりますよ。</p>



<p class="wp-block-paragraph">ぜひVBEを開いて、両方のコードを試してみてくださいね。VBA全体の学習順序に迷ったら「<a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBA学習の順番ガイド</a>」も参考にしてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-vba-howto-use-range/">VBA Rangeの使い方</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-for/">For文で処理を繰り返す方法</a></li><li><a href="https://mashukabu.com/vba-howto-use-for-each-next/">For Eachでセル・シートを一括処理</a></li><li><a href="https://mashukabu.com/excel-vba-howto-get-lastrow/">最終行を取得する3つの方法</a></li><li><a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">VBA If文の使い方</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-select-case/">Select Caseの使い方</a></li><li><a href="https://mashukabu.com/how-to-use-do-loop/">Do Loopの使い方</a></li><li><a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">VBE画面の見方</a></li><li><a href="https://mashukabu.com/excel-vba-option-explicit/">Option Explicitで変数宣言を強制する方法</a></li><li><a href="https://mashukabu.com/excel-vba-variable-explanation/">変数の使い方とルール</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-worksheetfunction/">WorksheetFunctionの使い方</a></li><li><a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBA学習の順番ガイド</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-range-cells/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
