vba 行や列を丸ごと削除する
In this Article
このチュートリアルでは、VBAを使用してExcelで行や列を削除するさまざまな方法を紹介します。
行や列を丸ごと削除する
VBAで行全体を削除するには、次のコードを使用します。
Rows(1).Delete
Deleteメソッドで行を削除していることに注意してください。
Rowsオブジェクトを参照する代わりに、 RangeオブジェクトをEntireRowと一緒に使うこともできます。
Range("a1").EntireRow.Delete
同様に、列全体を削除する場合は、以下のコードを使用します。
Columns(1).Delete
Range("a1").EntireColumn.Delete
複数の行または列を削除する
同じ方法を使って、複数の行を一度に削除することもできます。
Rows("1:3").Delete
列でもできます。
Columns("A:C").Delete
ここでは、引用符で囲まれた特定の行と列の番号/文字を参照していることに注意してください。 もちろん、範囲のEntireRowを参照することも可能です。
Range("a1:a10").EntireRow.Delete
注:以下の例は、行の削除のみを示していますが、上で見たように、列の削除とほぼ同じ構文です。
空白行・空白列の削除
この例では、行全体が空白の場合、その行を削除します。
Sub DeleteRows_EntireRowBlank()
Dim cell As Range
For Each cell In Range("b2:b20")
If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then
cell.EntireRow.Delete
End If
Next cell
End Sub
Excelのワークシート関数:CountAを利用しています。
セルが空白の場合、行を削除する
行内の特定の列が空白の場合、その行を削除します。(ここではB列)
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
セルの値に基づいて行を削除する
これは、範囲をループして、その行の特定のセル値が「削除」となっている場合に行を削除するものです。
Sub DeleteRowswithSpecificValue()
Dim cell As Range
For Each cell In Range("b2:b20")
If cell.Value = "delete" Then
cell.EntireRow.Delete
End If
Next cell
End Sub
その他の行と列の削除の例
重複した行の削除
このコードは、ある範囲内の重複する行をすべて削除します。
Range("b2:c100").RemoveDuplicates Columns:=2
Columns:=2を設定していることに注意してください。これは、行が重複しているかどうかを検討する際に、データの最初の2つの列の両方をチェックするようにVBAに指示します。重複は、両方の列で値が重複している場合にのみ検出されます。
もしこれを1にしていたら、最初の列だけで重複がチェックされていたでしょう。
テーブルの行の削除
ListObjectsを参照して、Tableの2行目を削除するコードです。
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
フィルタリングされた行の削除
フィルタリング後に表示されている行のみを削除する場合。
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
範囲内の行を削除する
このコードでは、範囲内のすべての行が削除されます。
Range("a1:a10").EntireRow.Delete
選択された行の削除
選択されている行をすべて削除します。
Selection.EntireRow.Delete
最終行の削除
B列の最後に使用された行を削除します。
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
2を1に変更することで、A列の最後に使用された行を削除することができます。
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
番号で列を削除する
列の番号で削除する場合は、次のようなコードを使用します。
Columns(2).Delete