データ内で空白セルが含まれる行全体を削除する方法
データ内で空白セルがあった場合その空白セルを含む全体行を削除したい場合があります。つまり、一つのデータ固まりを表すレコード内に空白セルがあった場合にそのレコードを削除する方法について解説します。
方法としては、データ範囲を参照するRange【レンジ】オブジェクトのCurrentRegion【カレントリージョン】プロパティでデータ範囲を参照し、特定のセルを参照するRange【レンジ】オブジェクトのSpecialCells【スペシャルセルズ】メソッドを使用して「空白セル」を参照し、参照したセル範囲の行全体を参照するRange【レンジ】オブジェクトのEntireRow【エンタイヤロウ】プロパティを使用して参照した空白セルが含まれる行全体を参照して、Range【レンジ】オブジェクトのDelete【デリイト】メソッドで参照されている行全体を削除します。
SpcialCells【スペシャルセルズ】メソッド
参照したセル範囲の中で引数Type【タイプ】に指定したセルの種類を満たすずべてのセルを参照するには、Range【レンジ】オブジェクトのSpcialCells【スペシャルセルズ】メソッドを使用します。SpcialCells【スペシャルセルズ】メソッドの設定値はExcelの「ホーム」タブの「編集」グループにある「検索と選択」ボタンの「条件を選択してジャンプ」の「選択オプション」ダイアログと同じ内容です。
SpcialCells【スペシャルセルズ】メソッドの書式と設定値(引数)の説明
[]内は省略可能です。
オブジェクト.SpcialCells(Type[,Value])
- オブジェクト(必須)
参照するセル範囲をRange【レンジ】オブジェクトを指定します。 - Type【タイプ】(必須)
参照するセルの種類をXlCellType列挙型の定数で指定します。XlCellType列挙型 定数 内容 xlCellTypeAllFormatConditions 条件付き書式が
設定されているセルxlCellTypeAllValidation 入力規則が
設定されているセルxlCellTypeBlanks 空白セル xlCellTypeComments コメントが
含まれているセルxlCellTypeConstants 定数が
含まれているセルxlCellTypeFormulas 数式が
含まれているセルxlCellTypeLastCell 使われたセル範囲内の
最後のセルxlCellTypeSameFormatConditions 同じ条件つき書式が
設定されているセルxlCellTypeSameValidation 同じ入力規則が
設定されているセルxlCellTypeVisible すべての可視セル - Value【バリュー】(省略可)
引数Type【タイプ】にxlCellTypeConstants(定数)またはxlCellTypeFormulas(数式)を指定した場合に、引数Value【バリュー】にXlSpecialCellsValue列挙型の定数を指定して、特定の種類の定数や数式を含むセルだけを参照することができます。省略した場合は、すべての定数および数式が対象になります。XlSpecialCellsValue列挙型 定数 内容 xlNumbers 数値のあるセル xlTextValues テキストのあるセル xlLogical 論理値のあるセル xlErrors エラーのあるセル
EntireRow【エンタイヤロウ】プロパティ
指定したセルやセル範囲を含む行全体を参照するには、Range【レンジ】オブジェクトのEntireRow【エンタイヤロウ】プロパティを使用します。Entire【エンタイヤ】は全体を意味し、Row【ロウ】は行を意味します。
EntireRow【エンタイヤロウ】プロパティの書式と設定値の説明
オブジェクト.EntireRow
- オブジェクト(必須)
参照したい行全体のなかのセルまたはセル範囲をRange【レンジ】オブジェクトで指定します。
Delete【デリイト】メソッド
指定したセルやセル範囲を削除するには、Range【レンジ】オブジェクトのDelete【デリイト】メソッドを使用します。セルを削除するとセルが左方向または、上方向にシフトされます。
Delete【デリイト】メソッドの書式と設定値(引数)の説明
[]内は省略可能です。
オブジェクト.Delete[(Shift)]
- オブジェクト(必須)
削除するセルまたはセル範囲をRange【レンジ】オブジェクトで指定します。 - Shift【シフト】(省略可)
セルを削除後にセルを移動する方向をXlDeleteShiftDirection列挙型の定数を使用して指定します。省略した場合は、Excelが自動的に移動します。XlDeleteShiftDirection列挙型 定数 内容 xlShiftToLeft 左方向にシフトします。 xlShiftUp 上方向にシフトします。
A1セルから始まるデータ範囲の空白セルがある行全体を削除するコード例
Sub 空白セルレコード削除() Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub
実行結果
以上で、データ内で空白セルが含まれる行全体を削除するについての解説を終了します。
ありがとうございました。