このチュートリアルでは、VBA を使用して Excel で行や列を削除するさまざまな方法を説明します。
行または列全体を削除
VBAで行全体を削除するには、次のコードのラインを使用します:
Rows(1).Delete
行を削除するのに Delete メソッドを使用していることに注意してください。
Rows オブジェクトを参照する代わりに、EntireRow を使用して Range オブジェクトに基づいて行を参照することができます:
Range("a1").EntireRow.Delete
同様に、列全体を削除するには、次のコードの行を使用します。
Columns(1).Delete
Range("a1").EntireColumn.Delete
Delete Multiple Rows or Columns
同じロジックを使用して、一度に複数の行を削除することもできます:
Rows("1:3").Delete
また列を削除することもできます:
Columns("A:C").Delete
ここで、特定の行や列番号/文字に引用符で囲まれ参照していることに注意してください。
もちろん、範囲の EntireRow を参照することもできます。
Range("a1:a10").EntireRow.Delete
注意: 以下の例は行の削除のみを示していますが、上で見たように、構文は列の削除とほとんど同じです。
Delete Blank / Empty Rows
この例では、行全体が空白である場合に行を削除します:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Excel ワークシート関数を使用しています。 COUNTA.
Delete Row if Cell is Blank
これは、その行の特定の列(この場合は列 B)が空白の場合に行を削除します。
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Delete Row Based on Cell Value
これは、範囲を通してループし、行の特定のセル値が「削除」を示す場合は行を削除するものです。
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
More Delete Row and Column Examples
Delete Duplicate Rows
このコードは、範囲内のすべての重複した行を削除します。 これは、行が重複しているかどうかを検討する際に、データの最初の 2 列の両方をチェックするように VBA に指示します。 重複は、両方の列に重複する値がある場合にのみ検出されます。
これを 1 に設定していた場合、最初の行だけが重複値についてチェックされたでしょう。
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
番号で列を削除する
番号で列を削除するには、次のようなコードを使用します: