Excel 删除空(";)行VBA
我现在搜索了两个小时。。。 但我没有让它工作,我看到了很多关于堆栈溢出的相关问题。。。但是没有找到正确的解决方案 我要找的是:Excel 删除空(";)行VBA,excel,vba,Excel,Vba,我现在搜索了两个小时。。。 但我没有让它工作,我看到了很多关于堆栈溢出的相关问题。。。但是没有找到正确的解决方案 我要找的是: 我有一个Excel工作簿,它是使用power query构建的。(效果很好) 我有一个VBA脚本,可以每4小时刷新一次电源查询(工作正常) 我有一个VBA脚本,可以将所有图纸提取到csv(工作非常完美) 但是有一个陷阱,这些表是用特殊的字符构建的,所以我创建了一个额外的表,包括所有你能想到的替换。。。(也可以完美地工作) 但这张额外的表格使用了3000行的信息。(基
- 我有一个Excel工作簿,它是使用power query构建的。(效果很好)
- 我有一个VBA脚本,可以每4小时刷新一次电源查询(工作正常)
- 我有一个VBA脚本,可以将所有图纸提取到csv(工作非常完美)
=IFERROR(substitutions.....;"")
文件底部的单元格看起来是空的,因为我在公式中使用了“”,但实际上这些单元格不是空的。。。因此,我需要一个VBA脚本,它将查找用“……< p>创建的空白单元格”,我找到了一个解决方案:
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
但是它很慢&占用大量内存。。。我希望有人有更好的解决办法 我确实找到了解决办法:
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
但是它很慢&占用大量内存。。。我希望有人有更好的解决办法 这会更快。不要删除循环中的单元格,而是在循环外部执行。这将导致仅删除一个行实例
这会更快。不要删除循环中的单元格,而是在循环外部执行。这将导致仅删除一个行实例
如果你真的在
“
中替换,那么你的问题就在别处。您也可以尝试TRIM
来摆脱领先/落后的空间。另外,没有足够的信息来提供解决方案。你在哪里寻找空白单元格?哪一列?如果你真的在“
中替换,那么你的问题就在别处。您也可以尝试TRIM
来摆脱领先/落后的空间。另外,没有足够的信息来提供解决方案。你在哪里寻找空白单元格?什么列?在循环之前设置为Application.screenUpdatement=False
,在循环之后设置为True。在循环之前设置为Application.screenUpdatement=False
,在循环之后设置为True。不过,如果要在DeleteMe
中添加多个单元格,最好更改if
的顺序,使用如果不删除我什么都不是,那么,因为第一次之后的所有时间都将进入如果,然后转到其他部分。因此,如果颠倒顺序,则直接转到if
。希望我有一个小小的评论,如果你想在DeleteMe
中添加许多单元格,最好更改if
的顺序,使用if note DeleteMe Is Nothing then
,因为第一次之后的所有时间都会进入if
然后进入Else
部分。因此,如果颠倒顺序,则直接转到if
。希望我讲得通