我只是使用来自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

但同样,我不知道自己在做什么。任何帮助/反馈表示赞赏
答案 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