Enn*_*ile 3 excel vba excel-vba
我正在使用此公式删除工作表中的空列.但删除它们大约需要15-20分钟.我可以以某种方式加快这个过程吗?很奇怪,它花了这么长时间,我只使用100列.
For j = 1 To 5
For i = 40 To 146
If Sheet8.cells(4, i) = "" Then
Columns(i).EntireColumn.Delete
End If
Next i
Next j
Run Code Online (Sandbox Code Playgroud)
如果你有真正的银行电池使用@Patrick Honorez答案使用
SpecialCells(xlCellTypeBlanks)速度更快.
但是如果你没有真正的空白单元格(例如显示为的公式""),那么你可以使用它:
Dim DeleteRange As Range
With sheet8
Dim i As Long
For i = 40 To 146
If .Cells(4, i).Value = vbNullString Then 'vbNullString = ""
If DeleteRange Is Nothing Then
Set DeleteRange = .Columns(i)
Else
Set DeleteRange = Union(DeleteRange, .Columns(i))
End If
End If
Next i
End With
If Not DeleteRange Is Nothing Then 'check if there is something to delete
DeleteRange.EntireColumn.Delete
End If
Run Code Online (Sandbox Code Playgroud)
它会收集您要删除的所有列,DeleteRange然后立即删除它们.这比删除每个列本身更快,因为每个删除操作都需要它的时间(这里我们只有一个删除操作).
请注意,我们不需要在此向后循环,因为我们只收集循环中的列,但是在循环之后删除操作,因此它根本不会影响循环计数.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |