VBA Delete Entire Row or Column

Associated Files Download Links

This tutorial will demonstrate different ways to delete rows and columns in Excel using VBA.

Delete Entire Row or Column

To delete an entire row in VBA use this line of code:

Notice we use the Delete method to delete a row.

Instead of referencing the Rows Object, you can reference rows based on their Range Object with EntireRow:

Similarly to delete an entire column, use these lines of code:

Delete Multiple Rows or Columns

Using the same logic, you can also delete multiple rows at once:

or columns:

Notice here we reference the specific row and column numbers / letters surrounded by quotations.

Of course, you can also reference the EntireRow of a range:

Note: The examples below only demonstrate deleting rows, however as you can see above, the syntax is virtually identically to delete columns.

Delete Blank / Empty Rows

This example will delete a row if the entire row is blank:

It makes use of the Excel worksheet function: COUNTA.

Delete Row if Cell is Blank

This will delete a row if specific column in that row is blank (in this case column B):

Delete Row Based on Cell Value

This will loop through a range, and delete rows if a certain cell value in that row says “delete”.

More Delete Row and Column Examples

Delete Duplicate Rows

This code will delete all duplicate rows in a range:

Notice we set Columns:=2. This tells VBA to check both the first two columns of data when considering if rows are duplicates. A duplicate is only found when both columns have duplicate values.

If we had set this to 1, only the first row would’ve been checked for duplicate values.

Delete Table Rows

This code will delete the second row in a Table by referencing ListObjects.

Delete Filtered Rows

To delete only rows that are visible after filtering:

Delete Rows in Range

This code will delete all rows in range:

Delete Selected Rows

This code will delete all selected rows:

Delete Last Row

This will delete the last used row in column B:

By changing 2 to 1, you can delete the last used row in column A, etc.:

Delete Columns by Number

To delete a column by it’s number, use a code like this: