删除Excel列如果1000>细胞是空的

时间:2018-02-11 18:22:43

标签: excel vba excel-vba multiple-columns

我只是使用来自Autodesk文件的数据通过算法填充表格。很多字段都是空的,事实上,许多列都是空的但是有几行。大约有1300个专栏,我试图将其减少。

如果列中有超过1000行,那么任何人都可以帮助我使用VBA删除列吗?我真的不懂任何VBA,所以我不知道从哪里开始......

我正在尝试这样的事情:



Sub ClearColumns()
'
' ClearColumns Macro
' Check to see if more than 1000 rows of a column are empty.  If so, delete the column.

Dim iColumn As Long
Dim iRow As Long
Dim iColumnMax As Long
Dim iRowMax As Long
Dim iEmptyCount
iColumnMax = 13000
iRowMax = 20000

For iColumn = 1 To iColumnMax
    For iRow = 1 To iRowMax
        If (Cells(iRow, iColumn) = "") Then iEmptyCount.Add (1)
        End If
    If (iEmptyCount > 999) Then Columns(iColumn).Delete
    Step 1
    End If
Step 1     
Application.Goto Reference:="ClearColumns"
End Sub




但同样,我不知道自己在做什么。任何帮助/反馈表示赞赏

3 个答案:

答案 0 :(得分:3)

这是一个删除完全空列的代码。 最后一列是在第一行分配的,也就是说,第一行中的存根单元格必须用任何符号填充。

Sub DeleteColumns()
Dim i As Long, lc As Long, lr As Long

lc = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To lc

lr = Cells(Rows.Count, i).End(xlUp).Row
If IsEmpty(Cells(lr, i)) = True Then
Cells(lr, i).EntireColumn.Delete
i = i - 1
lc = Cells(1, Columns.Count).End(xlToLeft).Column
If lc = i Then Exit For
End If
Next i

End Sub

答案 1 :(得分:3)

Sub DeleteColumns()

Dim ColNumber as Long

For ColNumber = 1300 to 1 Step -1
    If WorksheetFunction.CountBlank(Cells(1, ColNumber).Resize(20000,1)) > 1000 Then
        Cells(1,ColNumber).EntireColumn.Delete
    End If
Next

End Sub

答案 2 :(得分:1)

这是从2015年的解决方案中归功于@Jeeped。它将删除您使用范围内的所有空单元格。

 With Worksheets("name of your worksheet")
     .UsedRange.Cells.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
 End With