空白セルや数式セルの参照

ある条件に一致するセルだけを参照して操作する方法に、Range オブジェクトの SpecialCells メソッドを利用する方法があります。

SpecialCells メソッドの引数にセルの種類を指定して、空白セルや数式セルを参照することができます。

空白セルの参照

次のコードを実行するとデータが入力できます。(書式は設定してください。)

  ■ コード内を「Wクリック」で選択できます。

Sub データ5370_1()

    Range("A1") = "売上表"
    Range("A3") = "日付"
    Range("B3") = "分類"
    Range("C3") = "品名"
    Range("D3") = "単価"
    Range("E3") = "個数"
    Range("F3") = "合計"
    
    Range("A4") = "2021/10/1"
    Range("B4") = "C1"
    Range("C4") = "封筒"
    Range("D4") = 5000
    Range("E4") = ""
    Range("F4") = "=D4 * E4"

    Range("A5") = "2021/10/2"
    Range("B5") = "C2"
    Range("C5") = "メモ帳"
    Range("D5") = 3500
    Range("E5") = 12
    Range("F5") = "=D5 * E5"

    Range("A6") = "2021/10/3"
    Range("B6") = "S1"
    Range("C6") = "名刺セット"
    Range("D6") = 4500
    Range("E6") = 10
    Range("F6") = "=D6 * E6"

    Range("A7") = "2021/10/4"
    Range("B7") = "D1"
    Range("C7") = "ネームペン"
    Range("D7") = 2200
    Range("E7") = 12
    Range("F7") = "=D7 * E7"

    Range("A8") = ""
    Range("B8") = "D2"
    Range("C8") = "ネームペンセット"
    Range("D8") = 3200
    Range("E8") = ""
    Range("F8") = "=D8 * E8"

    Range("A9") = "2021/10/5"
    Range("B9") = "S1"
    Range("C9") = "名刺セット"
    Range("D9") = 4500
    Range("E9") = 8
    Range("F9") = "=D9 * E9"

End Sub

空白セルの参照

CurrentRegionプロパティで、表を選択します。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル5370_2()
 
    Range("A3").CurrentRegion.Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Interior.Color = RGB(0, 0, 255)
      
End Sub

• Range("A3").CurrentRegion.Select
 ’セルA3を基準に表を選択します。
• Selection.SpecialCells(xlCellTypeBlanks).Select
 ’空白のセルを選択します。
• Selection.Interior.Color = RGB(0, 0, 255)
 ’空白セルの背景を「青」にします。

●マクロの実行結果

■ SpecialCellsの引数

Type 内 容
xlCellTypeBlanks 空白のセル
xlCellTypeComments コメントを含むセル
xlCellTypeConstants 定数のセル
xlCellTypeFormulas 数式のセル
xlCellTypeVisible 可視セル
Value 内 容
xlErrors エラー値
xlLogiccal 論理値
xlNumbers 数値
xlTextValues 文字

セルの文字や数値を削除する

文字や数値のセルを参照して、ClearContents でデータを削除します。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル5370_3()
 
    Range("A4:F9").SpecialCells(xlCellTypeConstants, _
    xlNumbers + xlTextValues).ClearContents
    Range("A4:F9").Interior.Pattern = xlNone
      
End Sub

•  Range("A4:F9").SpecialCells(xlCellTypeConstants, _
xlNumbers + xlTextValues).ClearContents
 ’セルA4~セルF9を選択して、文字と数値を削除します。
• Range("A4:F9").Interior.Pattern = xlNone
 ’セルA4~セルF9を選択して、背景色を元に戻します。

●マクロの実行前

●マクロの実行結果
F列に入っている「数式」は削除されません。

データの無い行を削除する

★ 次の表でA列を指定して、データの無い行を削除します。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル5370_4()
 
    Range("A4:A9").SpecialCells(xlCellTypeBlanks) _
    .EntireRow.Delete
      
End Sub

•  Range("A4:A9").SpecialCells(xlCellTypeBlanks) _
.EntireRow.Delete
 ’セルA4~セルA9を指定します。
EntireRow.Deleteで行の位置を指定して削除します。

●マクロの実行結果
A列の8行目が削除されました。

★ 次の表でE列を指定して、データの無い行を削除します。

 

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル5370_5()
 
    Range("E4:E9").SpecialCells(xlCellTypeBlanks) _
    .EntireRow.Delete
      
End Sub

●マクロの実行結果
E列の4行目と8行目が削除されました。

以上で「空白セルや数式セルの参照」の説明を終わります。