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

<channel>
	<title>ネスト &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e3%83%8d%e3%82%b9%e3%83%88/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 22:49:45 +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のIF関数の使い方｜基本から複数条件・ネストまで実例で解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-if/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-if/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 16 Jan 2022 08:41:43 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[AND関数]]></category>
		<category><![CDATA[IF関数]]></category>
		<category><![CDATA[OR関数]]></category>
		<category><![CDATA[ネスト]]></category>
		<category><![CDATA[条件分岐]]></category>
		<category><![CDATA[複数条件]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=856</guid>

					<description><![CDATA[ExcelのIF関数の使い方を基本から応用まで解説。構文・引数の意味、複数条件（AND・OR）、ネストの書き方、実務活用パターン、よくあるエラーの対処法まで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「条件によって表示する値を変えたい」。Excelを使っていると、こんな場面に何度も出くわしますよね。売上が目標を超えたら「達成」、超えなかったら「未達」と表示したい。そんなときに使うのがIF関数です。</p>



<p class="wp-block-paragraph">IF関数はExcelの中でも使用頻度トップクラスの関数。でも「ネストがよくわからない」「AND・ORとの組み合わせが難しい」と感じている方も多いのではないでしょうか。</p>



<p class="wp-block-paragraph">この記事では、IF関数の使い方を基本から解説します。複数条件の指定やネストの書き方まで、実務で使える例を交えてわかりやすく説明します。</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">IF関数とは？</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></ol></li><li><a href="#toc5" tabindex="0">IF関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">数値を判定する例</a></li><li><a href="#toc7" tabindex="0">文字列を判定する例</a></li><li><a href="#toc8" tabindex="0">条件に合わないときに空白を表示する</a></li></ol></li><li><a href="#toc9" tabindex="0">IF関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">売上目標の達成判定</a></li><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">請求書の税率自動切り替え</a></li></ol></li><li><a href="#toc15" tabindex="0">IF関数で複数条件を指定する方法（AND・OR）</a><ol><li><a href="#toc16" tabindex="0">IF関数とAND関数で「すべて満たす」条件</a></li><li><a href="#toc17" tabindex="0">IF関数とOR関数で「いずれかを満たす」条件</a></li></ol></li><li><a href="#toc18" tabindex="0">IF関数のネスト（複数のIFを入れ子にする）</a><ol><li><a href="#toc19" tabindex="0">ネストの基本的な書き方</a></li><li><a href="#toc20" tabindex="0">ネストが多い場合はIFS関数も検討</a></li></ol></li><li><a href="#toc21" tabindex="0">IF関数と他の関数を組み合わせるテクニック</a><ol><li><a href="#toc22" tabindex="0">IF関数とVLOOKUP関数の組み合わせ</a></li><li><a href="#toc23" tabindex="0">IF関数とSUMIF関数の組み合わせ</a></li></ol></li><li><a href="#toc24" tabindex="0">IF関数でよくあるエラーと対処法</a></li><li><a href="#toc25" tabindex="0">IF関数と似た関数との使い分け</a><ol><li><a href="#toc26" tabindex="0">IF関数のネストとIFS関数の比較</a></li><li><a href="#toc27" tabindex="0">IF関数とSWITCH関数の使い分け</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ</a><ol><li><a href="#toc29" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">ExcelのIF関数は、条件に応じて処理を分岐させる関数です。「もし〜なら○○、そうでなければ△△」というロジックを数式で表現できます。</p>



<p class="wp-block-paragraph">読み方は「イフ関数」。英語の「if（もし）」がそのまま関数名になっています。Excelでは「論理関数」に分類されており、AND関数・OR関数などと同じグループです。</p>



<p class="wp-block-paragraph">たとえば「点数が70以上なら合格、それ以外は不合格」。こうした条件判定を自動化できるのがIF関数の役割です。数値・文字列・日付など、あらゆるデータに対して条件判定できます。</p>



<p class="wp-block-paragraph">手動で一件ずつ確認・入力する作業をIF関数で自動化すれば、データが変わっても再計算が自動で行われます。入力ミスも防げるため、実務の表作りには欠かせない関数です。Excelの全バージョンで使えるので、ぜひ覚えておきましょう。</p>



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



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



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



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



<p class="wp-block-paragraph">日本語に置き換えると「もし○○なら△△、そうでなければ□□」という形です。</p>



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



<p class="wp-block-paragraph">IF関数の引数は3つあります。</p>



<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のときに返す値</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">3つ目の「値が偽の場合」は省略できます。ただし、省略するとFALSEという文字が表示されます。空白にしたい場合は <code>""</code> と書いてください。この違いは意外と見落としやすいポイントです。</p>



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



<h3 class="wp-block-heading"><span id="toc6">数値を判定する例</span></h3>



<p class="wp-block-paragraph">まずは数値の判定です。テストの点数が70点以上なら「合格」と表示してみましょう。</p>



<pre class="wp-block-code"><code>=IF(B2&gt;=70,&quot;合格&quot;,&quot;不合格&quot;)</code></pre>



<p class="wp-block-paragraph">B2セルの値が70以上ならTRUEとなり「合格」が返ります。70未満ならFALSEとなり「不合格」が返ります。</p>



<p class="wp-block-paragraph">比較演算子は <code>>=</code>（以上）のほかにも使えます。<code>></code>（より大きい）、<code><</code>（より小さい）、<code><=</code>（以下）、<code>=</code>（等しい）、<code><></code>（等しくない）を場面に応じて使い分けてください。</p>



<h3 class="wp-block-heading"><span id="toc7">文字列を判定する例</span></h3>



<p class="wp-block-paragraph">文字列の判定もよく使います。部署が「営業部」なら「外勤手当あり」と表示する例です。</p>



<pre class="wp-block-code"><code>=IF(C2=&quot;営業部&quot;,&quot;外勤手当あり&quot;,&quot;なし&quot;)</code></pre>



<p class="wp-block-paragraph">文字列を条件にするときは、必ずダブルクォーテーション（<code>"</code>）で囲みます。囲み忘れると <code>#NAME?</code> エラーになるので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc8">条件に合わないときに空白を表示する</span></h3>



<p class="wp-block-paragraph">「条件に合うときだけ表示して、合わないときは空欄にしたい」。この要望はとても多いです。</p>



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



<p class="wp-block-paragraph">偽の場合に <code>""</code> を指定すれば、セルは空白になります。さきほど説明したとおり、省略するとFALSEが表示されてしまいます。見た目を整えたいときは <code>""</code> を忘れずに入れましょう。</p>



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



<p class="wp-block-paragraph">ここからは、実務でよく使うIF関数のパターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc10">売上目標の達成判定</span></h3>



<p class="wp-block-paragraph">売上と目標を比較して、達成・未達を自動判定する例です。</p>



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



<p class="wp-block-paragraph">B2が目標額、C2が実績額です。月次レポートや営業成績表でよく使うパターンですね。</p>



<h3 class="wp-block-heading"><span id="toc11">在庫数による発注アラート</span></h3>



<p class="wp-block-paragraph">在庫数が発注基準を下回ったらアラートを出す例です。</p>



<pre class="wp-block-code"><code>=IF(B2&lt;=D2,&quot;発注要&quot;,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">B2が現在庫数、D2が発注基準数です。条件に合わないときは空白にしておくと、一覧表がすっきりします。</p>



<h3 class="wp-block-heading"><span id="toc12">勤怠データの残業判定</span></h3>



<p class="wp-block-paragraph">勤務時間が8時間を超えたら「残業あり」と表示する例です。</p>



<pre class="wp-block-code"><code>=IF(C2&gt;8,&quot;残業あり&quot;,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">C2に勤務時間数を数値で入力している前提です。Excelの時刻形式（シリアル値）で管理している場合は <code>=IF(C2>TIME(8,0,0),"残業あり","")</code> を使ってください。</p>



<p class="wp-block-paragraph">残業がない日は空白にしておけば、残業のある日だけが目立ちます。</p>



<h3 class="wp-block-heading"><span id="toc13">料金区分の自動振り分け</span></h3>



<p class="wp-block-paragraph">年齢に応じて料金区分を分ける例です。</p>



<pre class="wp-block-code"><code>=IF(B2&gt;=18,&quot;大人&quot;,&quot;子供&quot;)</code></pre>



<p class="wp-block-paragraph">イベントの参加費や交通費の計算などで使えます。3区分以上に分けたい場合は、後述するネストを使います。</p>



<h3 class="wp-block-heading"><span id="toc14">請求書の税率自動切り替え</span></h3>



<p class="wp-block-paragraph">商品区分に応じて税率を切り替える例です。</p>



<pre class="wp-block-code"><code>=IF(D2=&quot;軽減税率&quot;,C2*0.08,C2*0.10)</code></pre>



<p class="wp-block-paragraph">D2に「軽減税率」と入力されていれば8%、それ以外は10%で計算します。請求書テンプレートに組み込んでおくと便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc15">IF関数で複数条件を指定する方法（AND・OR）</span></h2>



<p class="wp-block-paragraph">「条件を2つ以上同時にチェックしたい」場合は、<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="toc16">IF関数とAND関数で「すべて満たす」条件</span></h3>



<p class="wp-block-paragraph">AND関数は「すべての条件がTRUE」のときにTRUEを返します。IF関数の論理式にAND関数を入れる形です。</p>



<pre class="wp-block-code"><code>=IF(AND(B2&gt;=80,C2&gt;=80),&quot;合格&quot;,&quot;不合格&quot;)</code></pre>



<p class="wp-block-paragraph">この例では、B2とC2の両方が80以上のときだけ「合格」になります。片方でも80未満なら「不合格」です。</p>



<p class="wp-block-paragraph">AND関数には最大255個の条件を指定できます。ただし条件が多すぎると読みにくくなるので、3〜4個程度にとどめるのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc17">IF関数とOR関数で「いずれかを満たす」条件</span></h3>



<p class="wp-block-paragraph">OR関数は「いずれかの条件がTRUE」ならTRUEを返します。</p>



<pre class="wp-block-code"><code>=IF(OR(B2=&quot;東京&quot;,B2=&quot;大阪&quot;),&quot;対象&quot;,&quot;対象外&quot;)</code></pre>



<p class="wp-block-paragraph">B2が「東京」か「大阪」のどちらかなら「対象」になります。支店や地域でフィルタリングするときに便利です。</p>



<p class="wp-block-paragraph">AND関数とOR関数は組み合わせることもできます。</p>



<pre class="wp-block-code"><code>=IF(AND(B2&gt;=60,OR(C2=&quot;正社員&quot;,C2=&quot;契約社員&quot;)),&quot;手当支給&quot;,&quot;対象外&quot;)</code></pre>



<p class="wp-block-paragraph">「勤務時間が60以上」かつ「正社員または契約社員」という複合条件です。ちょっと複雑に見えますが、ANDの中にORが入っているだけなのでシンプルですよ。</p>



<h2 class="wp-block-heading"><span id="toc18">IF関数のネスト（複数のIFを入れ子にする）</span></h2>



<h3 class="wp-block-heading"><span id="toc19">ネストの基本的な書き方</span></h3>



<p class="wp-block-paragraph">IF関数の中にIF関数を入れることを「ネスト（入れ子）」と呼びます。3つ以上の分岐が必要なときに使います。</p>



<p class="wp-block-paragraph">たとえば成績をS・A・B・Cの4段階に分ける場合です。</p>



<pre class="wp-block-code"><code>=IF(A2&gt;=90,&quot;S&quot;,IF(A2&gt;=75,&quot;A&quot;,IF(A2&gt;=60,&quot;B&quot;,&quot;C&quot;)))</code></pre>



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



<ol class="wp-block-list"><li>A2が90以上 → 「S」</li><li>A2が75以上 → 「A」</li><li>A2が60以上 → 「B」</li><li>どれにも当てはまらない → 「C」</li></ol>



<p class="wp-block-paragraph">ポイントは、条件を大きい順に並べることです。最初にTRUEになった時点で処理が確定します。</p>



<p class="wp-block-paragraph">Excel 2007以降はネストを最大64段まで使えます。ただし実用上は3〜4段が限界です。それ以上になると数式が読めなくなります。</p>



<h3 class="wp-block-heading"><span id="toc20">ネストが多い場合はIFS関数も検討</span></h3>



<p class="wp-block-paragraph">ネストが3段を超えるなら、<a href="https://mashukabu.com/excel-function-howto-use-ifs/">IFS関数</a>への書き換えも検討してみてください。</p>



<p class="wp-block-paragraph">IFS関数なら同じ処理をフラットに書けます。</p>



<pre class="wp-block-code"><code>=IFS(A2&gt;=90,&quot;S&quot;,A2&gt;=75,&quot;A&quot;,A2&gt;=60,&quot;B&quot;,TRUE,&quot;C&quot;)</code></pre>



<p class="wp-block-paragraph">ネストの閉じカッコを数える必要がなくなり、可読性が上がります。ただしIFS関数はExcel 2019／Microsoft 365以降の対応です。古いバージョンを使っている方がいる環境では、IF関数のネストを使いましょう。</p>



<h2 class="wp-block-heading"><span id="toc21">IF関数と他の関数を組み合わせるテクニック</span></h2>



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



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>の結果をIF関数で判定するパターンです。VLOOKUPで検索した値が条件を満たすかチェックできます。</p>



<pre class="wp-block-code"><code>=IF(VLOOKUP(A2,商品マスタ!A:C,3,FALSE)&gt;=1000,&quot;高額&quot;,&quot;通常&quot;)</code></pre>



<p class="wp-block-paragraph">商品コードから価格を検索し、1000以上なら「高額」と表示します。</p>



<p class="wp-block-paragraph">VLOOKUPは検索値が見つからないと <code>#N/A</code> エラーになります。エラーを回避したい場合は、<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で囲みましょう。</p>



<pre class="wp-block-code"><code>=IFERROR(IF(VLOOKUP(A2,商品マスタ!A:C,3,FALSE)&gt;=1000,&quot;高額&quot;,&quot;通常&quot;),&quot;該当なし&quot;)</code></pre>



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



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF関数</a>の合計結果をIF関数で評価するパターンです。</p>



<pre class="wp-block-code"><code>=IF(SUMIF(B:B,E2,C:C)&gt;=100000,&quot;優良&quot;,&quot;一般&quot;)</code></pre>



<p class="wp-block-paragraph">特定の担当者の売上合計が10万円以上なら「優良」と判定します。月次レポートの顧客ランク付けなどで活躍します。</p>



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



<p class="wp-block-paragraph">IF関数でつまずきやすいエラーを3つ紹介します。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#NAME?</code></td><td>関数名のスペルミス、文字列の <code>"</code> 漏れ</td><td>関数名と引用符を確認する</td></tr><tr><td><code>#VALUE!</code></td><td>参照先セルにエラーがある</td><td>参照元のエラーを解消する</td></tr><tr><td>FALSEが表示される</td><td>値が偽の場合を省略している</td><td><code>""</code> を指定して空白にする</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に3つ目は要注意です。エラーではないのに意図しない表示になるため、原因に気づきにくいです。</p>



<p class="wp-block-paragraph">「FALSEが表示されて困る」という方は、数式の末尾を確認してみてください。<code>=IF(B2>=70,"合格")</code> のように3つ目の引数がない場合、<code>=IF(B2>=70,"合格","")</code> に修正すれば解決します。</p>



<p class="wp-block-paragraph">また、文字列をダブルクォーテーションで囲み忘れるミスも多いです。<code>=IF(B2=合格,...)</code> ではなく <code>=IF(B2="合格",...)</code> と書きましょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>エラー処理を自動化したい場合は、<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-ifna/">IFNA関数</a>の活用がおすすめです。IF関数で判定する前に、エラーを安全な値に置き換えておくと安心ですよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc25">IF関数と似た関数との使い分け</span></h2>



<h3 class="wp-block-heading"><span id="toc26">IF関数のネストとIFS関数の比較</span></h3>



<p class="wp-block-paragraph">条件分岐が3つ以上あるとき、IFのネストと<a href="https://mashukabu.com/excel-function-howto-use-ifs/">IFS関数</a>のどちらを使うか迷いますよね。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>IF関数（ネスト）</th><th>IFS関数</th></tr></thead><tbody><tr><td>対応バージョン</td><td>全バージョン</td><td>Excel 2019 / Microsoft 365 以降</td></tr><tr><td>最大条件数</td><td>64段（ネスト）</td><td>127条件</td></tr><tr><td>可読性</td><td>3段超で低下</td><td>条件が多くても読みやすい</td></tr><tr><td>else（それ以外）の書き方</td><td>最後の値が偽の場合</td><td>最後の条件にTRUEを指定</td></tr></tbody></table></figure>



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



<ul class="wp-block-list"><li>条件が2つまで → IF関数</li><li>条件が3つ以上 → IFS関数（環境が対応していれば）</li><li>古いExcelとの互換性が必要 → IF関数のネスト</li></ul>



<p class="wp-block-paragraph">詳しくは<a href="https://mashukabu.com/excel-if-ifs-iferror-ifna/">IF・IFS・IFERROR・IFNAの使い分け</a>の記事もあわせてご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc27">IF関数とSWITCH関数の使い分け</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-switch/">SWITCH関数</a>は「値が○○のとき△△」という完全一致の分岐に向いています。</p>



<ul class="wp-block-list"><li>大小比較（<code>>=</code> や <code><</code> など） → IF関数</li><li>完全一致の分岐（値が「A」なら○○、「B」なら△△） → SWITCH関数</li></ul>



<p class="wp-block-paragraph">IF関数は条件式を自由に書けるため、柔軟性が高いです。一方、SWITCH関数は完全一致の分岐を見やすく書けます。場面に応じて使い分けてみてください。</p>



<p class="wp-block-paragraph">なお、分岐する値が固定の場合は<a href="https://mashukabu.com/excel-function-howto-use-choose/">CHOOSE関数</a>も選択肢のひとつです。</p>



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



<p class="wp-block-paragraph">IF関数は「条件に応じて結果を分岐させる」Excelの基本関数です。この記事のポイントをおさらいします。</p>



<ul class="wp-block-list"><li>構文は <code>=IF(論理式, 真の場合, 偽の場合)</code> のシンプルな3引数</li><li>偽の場合を省略するとFALSEが表示される。空白にしたいなら <code>""</code> を指定する</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>と組み合わせる</li><li>ネストは3〜4段が実用上の限界。それ以上は<a href="https://mashukabu.com/excel-function-howto-use-ifs/">IFS関数</a>を検討する</li><li>VLOOKUPやSUMIFとの組み合わせで実務の自動化が広がる</li></ul>



<p class="wp-block-paragraph">まずは基本の形を覚えて、実務の表に組み込んでみてください。一度使い方がわかると、いろいろな場面で応用できますよ。</p>



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



<p class="wp-block-paragraph">条件分岐・条件付き処理の関連記事もあわせてチェックしてみてくださいね。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-if-ifs-iferror-ifna/">IF・IFS・IFERROR・IFNAの使い分け</a> -- どの関数を使うか迷ったときに</li><li><a href="https://mashukabu.com/excel-function-howto-use-ifs/">IFS関数の使い方</a> -- 複数条件をネストなしで書く</li><li><a href="https://mashukabu.com/excel-function-howto-use-and/">AND関数の使い方</a> -- 「かつ」の条件判定</li><li><a href="https://mashukabu.com/excel-function-howto-use-or/">OR関数の使い方</a> -- 「または」の条件判定</li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a> -- エラー時の処理</li><li><a href="https://mashukabu.com/excel-function-howto-use-ifna/">IFNA関数の使い方</a> -- #N/Aエラーの処理</li><li><a href="https://mashukabu.com/excel-function-howto-use-switch/">SWITCH関数の使い方</a> -- 値のパターンで分岐</li><li><a href="https://mashukabu.com/excel-function-howto-use-choose/">CHOOSE関数の使い方</a> -- インデックスで分岐</li><li><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数の使い方</a> -- データの検索</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-if/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VBA For~Next文の使い方｜繰り返し処理の基本から実務パターンまで解説</title>
		<link>https://mashukabu.com/excel-vba-howto-use-for/</link>
					<comments>https://mashukabu.com/excel-vba-howto-use-for/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 22 Nov 2021 12:30:24 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[Exit For]]></category>
		<category><![CDATA[For文]]></category>
		<category><![CDATA[Step]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[ネスト]]></category>
		<category><![CDATA[ループ]]></category>
		<category><![CDATA[繰り返し処理]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=238</guid>

					<description><![CDATA[VBAのFor~Next文の使い方を基本構文から実務パターンまで解説します。Stepでの増減指定やExit Forでの途中終了、ネストの書き方に加え、最終行の自動取得やDo Loop・For Eachとの使い分けまで網羅しています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「同じ処理を何十回も手作業で繰り返している&#8230;&#8230;」</p>



<p class="wp-block-paragraph">VBAを使い始めた方なら、一度はこんな場面に出くわしたのではないでしょうか。セルに連番を振ったり、データを1行ずつチェックしたり。手作業だと時間がかかるうえにミスも出やすいですよね。</p>



<p class="wp-block-paragraph">VBAの<strong>For~Next文</strong>を使えば、こうした繰り返し処理をたった数行のコードで自動化できます。この記事では基本構文から実務で使えるパターンまで、まとめて解説していきます。</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">VBA For~Next文とは？繰り返し処理の基本を理解しよう</a></li><li><a href="#toc2" tabindex="0">VBA For~Next文の基本構文と書き方</a><ol><li><a href="#toc3" tabindex="0">基本の書き方</a></li><li><a href="#toc4" tabindex="0">Stepで増減値を変更する</a></li><li><a href="#toc5" tabindex="0">Exit Forで途中終了する</a></li></ol></li><li><a href="#toc6" tabindex="0">VBA For文の実務パターン5選</a><ol><li><a href="#toc7" tabindex="0">パターン1: セルに連番を振る</a></li><li><a href="#toc8" tabindex="0">パターン2: 条件に合うデータだけ処理する</a></li><li><a href="#toc9" tabindex="0">パターン3: 最終行まで自動でループする</a></li><li><a href="#toc10" tabindex="0">パターン4: 逆順ループで行を安全に削除する</a></li><li><a href="#toc11" tabindex="0">パターン5: 複数シートを一括処理する</a></li></ol></li><li><a href="#toc12" tabindex="0">For文のネスト（入れ子）で表を一括処理する</a></li><li><a href="#toc13" tabindex="0">VBA For文でよくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">For~Next・Do Loop・For Eachの使い分け</a><ol><li><a href="#toc15" tabindex="0">どう選べばいい？3ステップの判断フロー</a></li></ol></li><li><a href="#toc16" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBA For~Next文とは？繰り返し処理の基本を理解しよう</span></h2>



<p class="wp-block-paragraph">For~Next文は、VBAで<strong>「決まった回数だけ処理を繰り返す」</strong>ための構文です。</p>



<p class="wp-block-paragraph">たとえば「1行目から100行目まで同じ処理をしたい」とき、100回コードを書く必要はありません。For~Next文を使えば、カウンター変数が自動で増えながら指定した回数だけ処理を実行してくれます。</p>



<p class="wp-block-paragraph">VBAにはいくつかのループ構文がありますが、For~Next文は<strong>繰り返す回数がはっきり決まっているとき</strong>に一番使いやすい構文です。</p>



<h2 class="wp-block-heading"><span id="toc2">VBA For~Next文の基本構文と書き方</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本の書き方</span></h3>



<p class="wp-block-paragraph">For~Next文の構文はこちらです。</p>



<pre class="wp-block-code"><code>Sub sample()
    Dim i As Long

    For i = 1 To 10
        '--- ここに繰り返したい処理を書く ---
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">動作の流れをかんたんに整理すると、次のようになります。</p>



<ol class="wp-block-list"><li>カウンター変数 <code>i</code> に初期値（ここでは1）が入る</li><li>処理を実行する</li><li><code>Next i</code> で <code>i</code> が1つ増える</li><li><code>i</code> が最終値（ここでは10）を超えていなければ、2に戻る</li><li><code>i</code> が最終値を超えたらループ終了</li></ol>



<p class="wp-block-paragraph">カウンター変数の名前は <code>i</code> が定番です。ただし <code>row</code> や <code>count</code> など、分かりやすい名前でもOKですよ。ポイントは<strong>数値型（Long型）で宣言する</strong>ことです。</p>



<p class="wp-block-paragraph"><code>Integer</code> 型は扱える範囲が -32,768 から 32,767 までです。一方 <code>Long</code> 型なら約21億まで対応できます。大きなデータでも安心なので、迷ったら <code>Long</code> を選んでおきましょう。変数の型について詳しく知りたい方は「<a href="https://mashukabu.com/excel-vba-variable-explanation/">VBAの変数の使い方</a>」の記事もあわせてどうぞ。</p>



<h3 class="wp-block-heading"><span id="toc4">Stepで増減値を変更する</span></h3>



<p class="wp-block-paragraph">通常、カウンター変数は1ずつ増えていきます。<strong>Step</strong> を使うと、増減の幅を自由に変えられます。</p>



<pre class="wp-block-code"><code>' 2行おきに処理する（1, 3, 5, 7, 9行目）
Sub sample_step()
    Dim i As Long

    For i = 1 To 9 Step 2
        Cells(i, 1).Interior.Color = RGB(255, 255, 200)
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">カウントを減らすことも可能です。その場合は<strong>初期値を最終値より大きくする</strong>のを忘れないでくださいね。</p>



<pre class="wp-block-code"><code>' 10から1に向かってカウントダウン
Sub sample_countdown()
    Dim i As Long

    For i = 10 To 1 Step -1
        Cells(i, 1).Value = i &amp; &quot;番目&quot;
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">注意点として、<strong>Step に 0 を指定すると無限ループになります</strong>。エラーにはならず延々と処理が続いてしまいます。うっかり書かないように気をつけましょう。</p>



<h3 class="wp-block-heading"><span id="toc5">Exit Forで途中終了する</span></h3>



<p class="wp-block-paragraph">ループの途中で「もうこれ以上繰り返す必要がない」という場面もありますよね。そんなときは <strong>Exit For</strong> を使います。</p>



<pre class="wp-block-code"><code>' A列から「合計」というセルを探して、見つけたらループ終了
Sub sample_exit_for()
    Dim i As Long

    For i = 1 To 1000
        If Cells(i, 1).Value = &quot;合計&quot; Then
            MsgBox i &amp; &quot;行目に「合計」が見つかりました&quot;
            Exit For
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">大量のデータを処理するとき、目的のデータが見つかった時点でループを抜ければ<strong>処理時間を大幅に短縮</strong>できます。実務ではかなり重宝するテクニックですよ。</p>



<h2 class="wp-block-heading"><span id="toc6">VBA For文の実務パターン5選</span></h2>



<p class="wp-block-paragraph">ここからは、実際の業務で使えるパターンを紹介していきます。</p>



<h3 class="wp-block-heading"><span id="toc7">パターン1: セルに連番を振る</span></h3>



<p class="wp-block-paragraph">一番シンプルな使い方です。指定した範囲に連番を入力します。</p>



<pre class="wp-block-code"><code>Sub 連番を振る()
    Dim i As Long

    For i = 1 To 20
        Cells(i, 1).Value = i
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">このコードを実行すると A1 から A20 セルに 1 から 20 の連番が入ります。<a href="https://mashukabu.com/excel-vba-howto-use-range/">RangeやCellsの使い方</a>を理解しておくと、セルの指定がもっと柔軟にできるようになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">パターン2: 条件に合うデータだけ処理する</span></h3>



<p class="wp-block-paragraph">For文と<a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">If文</a>を組み合わせると、条件に合ったデータだけを処理できます。実務で特に使う場面が多いパターンです。</p>



<pre class="wp-block-code"><code>' B列が「未処理」の行だけC列に「要対応」と入力
Sub 条件付き処理()
    Dim i As Long

    For i = 2 To 100
        If Cells(i, 2).Value = &quot;未処理&quot; Then
            Cells(i, 3).Value = &quot;要対応&quot;
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">条件に合う行だけ色を付けたり、別シートにコピーしたりといった応用もできます。</p>



<h3 class="wp-block-heading"><span id="toc9">パターン3: 最終行まで自動でループする</span></h3>



<p class="wp-block-paragraph">実務では、データの行数が毎回変わることがほとんどです。ループの終了値を固定してしまうと、データが増えたときに処理漏れが起きてしまいます。</p>



<p class="wp-block-paragraph">そこで、<a href="https://mashukabu.com/excel-vba-howto-get-lastrow/">最終行を自動取得</a>してループの終了値に使うのが定番パターンです。</p>



<pre class="wp-block-code"><code>Sub 最終行まで処理()
    Dim i As Long
    Dim lastRow As Long

    '--- A列の最終行を取得 ---
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastRow
        '--- 2行目からデータ最終行まで処理 ---
        If Cells(i, 1).Value = &quot;&quot; Then
            Cells(i, 1).Interior.Color = RGB(255, 200, 200)
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Cells(Rows.Count, 1).End(xlUp).Row</code> は「A列の一番下から上に向かって、最初にデータがあるセルの行番号を返す」という意味です。これで毎回データ件数を調べなくて済みますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン4: 逆順ループで行を安全に削除する</span></h3>



<p class="wp-block-paragraph">行の削除処理をFor文で行うとき、上から順に回すと行番号がずれて正しく処理できません。<strong>Step -1 で下から上に向かってループする</strong>のがポイントです。</p>



<pre class="wp-block-code"><code>Sub 空白行を削除()
    Dim i As Long
    Dim lastRow As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = lastRow To 2 Step -1
        If Cells(i, 1).Value = &quot;&quot; Then
            Rows(i).Delete
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">上から削除すると、たとえば3行目を消した瞬間に4行目が3行目に繰り上がります。すると次の <code>i = 4</code> では元の5行目を処理してしまい、旧4行目がスキップされます。逆順ループならこの問題が起きません。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン5: 複数シートを一括処理する</span></h3>



<p class="wp-block-paragraph">ブック内のすべてのシートに同じ処理をかけたい場面もあります。シート数をカウンター変数の終了値に使うことで、For文でも対応できます。</p>



<pre class="wp-block-code"><code>Sub 全シートにヘッダー追加()
    Dim i As Long

    For i = 1 To Worksheets.Count
        Worksheets(i).Range(&quot;A1&quot;).Value = &quot;No.&quot;
        Worksheets(i).Range(&quot;B1&quot;).Value = &quot;名前&quot;
        Worksheets(i).Range(&quot;C1&quot;).Value = &quot;金額&quot;
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">ただし、シートやセル範囲などの「コレクション」を順番に処理するなら、<a href="https://mashukabu.com/vba-howto-use-for-each-next/">For Each~Next文</a>のほうがコードがシンプルになります。用途に応じて使い分けてみてください。</p>



<h2 class="wp-block-heading"><span id="toc12">For文のネスト（入れ子）で表を一括処理する</span></h2>



<p class="wp-block-paragraph">For文の中にさらにFor文を入れることを<strong>ネスト（入れ子）</strong>と呼びます。少し複雑に見えますが、やっていることはシンプルです。</p>



<p class="wp-block-paragraph">外側のFor文が<strong>行</strong>を、内側のFor文が<strong>列</strong>を担当するイメージで考えてみてください。</p>



<pre class="wp-block-code"><code>' 5行 x 3列の表すべてに値を入力する
Sub ネストの例()
    Dim i As Long
    Dim j As Long

    For i = 1 To 5       '行のループ
        For j = 1 To 3   '列のループ
            Cells(i, j).Value = i &amp; &quot;行&quot; &amp; j &amp; &quot;列&quot;
        Next j
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">実行すると、A1 から C5 のセルに「1行1列」「1行2列」&#8230;&#8230;といったテキストが入ります。</p>



<p class="wp-block-paragraph">ネストを使った実務的な例も見てみましょう。表の中で空白セルを見つけて「未入力」と表示するマクロです。</p>



<pre class="wp-block-code"><code>' 表内の空白セルに「未入力」と表示
Sub 空白チェック()
    Dim i As Long
    Dim j As Long

    For i = 2 To 50       '2行目から50行目まで
        For j = 1 To 5    'A列からE列まで
            If Cells(i, j).Value = &quot;&quot; Then
                Cells(i, j).Value = &quot;未入力&quot;
                Cells(i, j).Interior.Color = RGB(255, 200, 200)
            End If
        Next j
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">ネストするときのポイントは、<strong>外側と内側で別の変数名を使う</strong>ことです。外側が <code>i</code> なら内側は <code>j</code>、さらにネストするなら <code>k</code> にするのが一般的ですよ。同じ変数名を使うとエラーになるので注意してくださいね。</p>



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



<p class="wp-block-paragraph">For文を使っていると遭遇しがちなエラーをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー内容</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>処理が終わらない（無限ループ）</td><td>Step に 0 を指定している</td><td>Step の値を1以上（または-1以下）にする</td></tr><tr><td>ループが一度も実行されない</td><td>初期値 > 最終値になっている（Step が正の値のとき）</td><td>初期値と最終値の大小関係を確認する</td></tr><tr><td>「Next に対応する For がありません」</td><td>For と Next の対応がずれている</td><td>ネスト時は内側から順に Next を閉じる</td></tr><tr><td>「オーバーフロー」エラー</td><td>カウンター変数が Integer 型で範囲超え</td><td>変数を Long 型に変更する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に「ループが一度も実行されない」パターンは気づきにくいバグです。<code>Step -1</code> を使うときに初期値と最終値を逆にし忘れるケースが多いので、気をつけましょう。</p>



<h2 class="wp-block-heading"><span id="toc14">For~Next・Do Loop・For Eachの使い分け</span></h2>



<p class="wp-block-paragraph">VBAには For~Next 以外にもループ構文があります。それぞれの特徴を整理しておくと、場面に応じて最適な構文を選べるようになりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>構文</th><th>向いている場面</th><th>特徴</th></tr></thead><tbody><tr><td><strong>For~Next</strong></td><td>繰り返す回数が決まっているとき</td><td>カウンター変数で回数を制御</td></tr><tr><td><strong>Do Loop</strong></td><td>条件を満たすまで（または満たす間）繰り返したいとき</td><td>回数が事前に分からなくてもOK</td></tr><tr><td><strong>For Each</strong></td><td>シートやセル範囲などのコレクションを順番に処理したいとき</td><td>オブジェクトを1つずつ取り出せる</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc15">どう選べばいい？3ステップの判断フロー</span></h3>



<ol class="wp-block-list"><li><strong>繰り返す回数が決まっている？</strong> → Yes なら <strong>For~Next</strong></li><li><strong>コレクション（シート・セル範囲・配列）を順番に処理したい？</strong> → Yes なら <strong><a href="https://mashukabu.com/vba-howto-use-for-each-next/">For Each</a></strong></li><li><strong>「条件を満たすまで」繰り返したい？</strong> → Yes なら <strong><a href="https://mashukabu.com/how-to-use-do-loop/">Do Loop</a></strong></li></ol>



<p class="wp-block-paragraph">たとえば「A列の最終行まで処理したいけど、データ件数が毎回変わる」という場合でも、最終行を取得すれば回数が確定するため For~Next で対応できます。一方、「空白セルが見つかるまで」のように終了条件が行数ではない場合は Do Loop が向いています。</p>



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



<p class="wp-block-paragraph">この記事では、VBAのFor~Next文について基本から実務パターンまで解説しました。</p>



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



<ul class="wp-block-list"><li>For~Next文は<strong>回数が決まった繰り返し処理</strong>に最適</li><li><strong>Step</strong> で増減幅を変更、<strong>Exit For</strong> で途中終了できる</li><li><strong>最終行の自動取得</strong>と組み合わせるのが実務の定番パターン</li><li><strong>逆順ループ（Step -1）</strong>は行削除時に必須のテクニック</li><li><strong>ネスト</strong>を使えば行と列の二重ループで表全体を処理できる</li><li>Do Loop・For Eachとの使い分けで、より適切なループ構文を選べる</li></ul>



<p class="wp-block-paragraph">For文はVBAの中でも使用頻度がとても高い構文です。まずはこの記事のサンプルコードをコピーして動かしてみてください。自分で動かしてみると、理解がぐっと深まりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-howto-use-for/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
