【Excel VBA】空白セルをスキップして効率処理!If文による「空欄なら処理しない」の実装方法

Excel VBAで複数のセルを一括処理する際、よくある課題の一つが「空白セルをどう扱うか」です。

例えば、次のような場面に心当たりはないでしょうか?

  • 数値が入力されているセルだけを合計したい
  • 記入済みの行だけを他のシートへ転記したい
  • 空白のセルには何もせず、次の処理に進みたい

このような場合に有効なのが、VBAのIf文による条件分岐です。本記事では、**「セルが空白であれば処理をスキップする」**ための基本的な考え方と、実用的なコード例を2種類ご紹介いたします。


目次

空白セルの判定方法は主に2つ

セルが空白かどうかを判断する方法は、主に以下の2通りです。

1. IsEmpty関数を使う方法

IsEmpty関数は、セルが「完全に何も入力されていない状態」であるかどうかを判断します。数式が入力されていて、結果が空欄である場合はFalseを返します。

2. ""(空文字列)との比較

セルの値が""(空文字列)であれば空白とみなす方法です。こちらは、数式の結果が空文字列となっているセルも「空欄」として扱われます。


コード例①:空白セルを除外して合計する(IsEmptyを使用)

Option Explicit

Sub SumNonBlankCells()
    
    Dim rngTarget As Range
    Dim c As Range
    Dim total As Double
    
    Set rngTarget = Sheet1.Range("A1:A100")
    
    For Each c In rngTarget
        If Not IsEmpty(c.Value) Then
            total = total + Val(c.Value)
        End If
    Next c
    
    MsgBox "入力済みセルの合計は " & total & " です。", vbInformation
    
End Sub

解説

このコードは、シートのA1~A100までの範囲内にある「空でないセル」だけを集計しています。IsEmpty関数により、完全に未入力のセルのみを除外しています。


コード例②:記入済みの行だけを別シートへ転記(空文字列で判定)

Option Explicit

Sub CopyFilledRows()
    
    Dim wsSrc As Worksheet
    Dim wsDst As Worksheet
    Dim lastRow As Long
    Dim dstRow As Long
    Dim i As Long
    
    Set wsSrc = Worksheets("Sheet1")
    Set wsDst = Worksheets("Sheet2")
    
    lastRow = wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row
    dstRow = 1
    
    For i = 1 To lastRow
        If wsSrc.Cells(i, "A").Value <> "" Then
            wsSrc.Rows(i).Copy Destination:=wsDst.Rows(dstRow)
            dstRow = dstRow + 1
        End If
    Next i
    
    MsgBox "転記が完了しました。", vbInformation
    
End Sub

解説

このマクロは、A列にデータがある行のみを別シート(Sheet2)に転記します。""との比較により、数式が返す空白文字列のセルも「空白」とみなしてスキップされます。


判定方法の使い分け

判定方法向いているケース
IsEmpty数式などが入っていても「未入力セルだけ」を判別したい場合
"" 比較数式の結果が空でも「空欄扱い」したい場合

どちらを使うかは、シートの構成や目的に応じて柔軟に選ぶのがポイントです。


まとめ

Excel VBAで「空白セルはスキップして処理を行いたい」といった要件は非常に多く、If文による条件分岐を取り入れることで、処理効率やエラー回避が大きく改善されます。

今回ご紹介したような基本的な書き方をマスターしておけば、実務におけるマクロ作成の幅がぐっと広がります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次