我正在搜索2个小时... 但是我没有使它起作用,我在stackoverflow上看到了很多相关的问题...但是还没有找到正确的解决方案……(
我要寻找的是: 我有一个Excel,这是使用Power查询构建的。 (完美运行) 我有一个vba脚本,可以每4小时刷新一次电源查询(完美运行) 我有一个vba脚本,可将所有工作表提取到csv(完美运行)
但是有一个陷阱,工作表是用特殊字符构建的,所以我确实创建了一个额外的工作表,其中包含您可能认为的所有替换...(效果也很好)
但是此额外的工作表使用了3000行的信息。 (基于从功率查询中提取的表)。强大的查询功能仍然存在,有时我需要2000行,有时需要2800 +,这就是为什么我确实基于3000行制作了额外的工作表的原因...
使用公式:
=IFERROR(substitutions.....;"")
文件底部的单元格看起来是空的,因为我确实在公式中使用了“”,但是实际上单元格不是空的。所以我需要一个vba脚本,它将查找空白的单元格。用“”创建...
答案 0 :(得分:1)
这将更快。与其在循环中删除单元格,不如在循环之外删除单元格。这将导致仅删除行的一个实例。
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.ActiveSheet
Dim rng As Range, myCell As Range, DeleteMe As Range
'Loop to find rows to delete
For Each myCell In ws.Range("A1:A3000")
If myCell = "" Then
If DeleteMe Is Nothing Then
Set DeleteMe = myCell
Else
Set DeleteMe = Union(DeleteMe, myCell)
End If
End If
Next myCell
'Delete rows here
If Not DeleteMe Is Nothing Then DeleteMe.EntireRow.Delete
End Sub
答案 1 :(得分:0)
我确实找到了解决方法:
Sub DeleteRowsWithEmptyColumnDCell()
Dim rng As Range
Dim i As Long
Set rng = ThisWorkbook.ActiveSheet.Range("A1:A3000")
With rng
' Loop through all cells of the range
' Loop backwards, hence the "Step -1"
For i = .Rows.Count To 1 Step -1
If .Item(i) = "" Then
' Since cell is empty, delete the whole row
.Item(i).EntireRow.Delete
End If
Next i
End With
End Sub
但是它很慢并且占用大量内存...我希望有人有更好的解决方案!