从第2行开始删除空白列

时间:2017-11-08 10:51:43

标签: vba excel-vba excel

我正在尝试从第2行中删除工作表中的空白列。如果整列是空白的,我想删除该列。

我从第2行开始的原因是因为我在第1行中有标题。如果该列为空,这些也将被删除。我如何从第2行开始?

Sub Delete_Cols()
 Dim MyRange As Range
    Dim iCounter As Long
    Set MyRange = ActiveSheet.UsedRange
    For iCounter = MyRange.Columns.Count To 1 Step -1
       If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
       Columns(iCounter).Delete
       End If
    Next iCounter
End Sub

我需要宏来开始检查第2行中的空白列。

3 个答案:

答案 0 :(得分:0)

如果您想从第2行开始,则需要Clear而不是Delete。 这是一种解决方法:

If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
    Range(Cells(2, iCounter), Cells(2 ^ 16, iCounter)).Clear
End If

它将清除第2行到第65536行的范围。可能它会以你想要的方式工作。

答案 1 :(得分:0)

下面的VBA会删除工作表中的列,如果它是空的:

Sub DeleteEmptyColumns()
  'Updateby20140317
  Dim rng As Range
  Dim InputRng As Range
  xTitleId = "KutoolsforExcel"
  Set InputRng = Application.Selection
  Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
  Application.ScreenUpdating = False
  For i = InputRng.Columns.Count To 1 Step -1
      Set rng = InputRng.Cells(1, i).EntireColumn
      If Application.WorksheetFunction.CountA(rng) = 0 Then
        rng.Delete
    End If
  Next
  Application.ScreenUpdating = True
End Sub

答案 2 :(得分:0)

如果我说得对,你想看看从第2行开始的列是否为空,如果是,yoo想要删除该列。如果每列都有标题,则代码只需要一个小的修正

Sub Delete_Cols()
    Dim MyRange As Range
    Dim iCounter As Long
    Set MyRange = ActiveSheet.UsedRange
    For iCounter = MyRange.Columns.Count To 1 Step -1
        If Application.CountA(Columns(iCounter).EntireColumn) = 1 Then
            Columns(iCounter).Delete
        End If
    Next iCounter
End Sub