gpt4 book ai didi

excel - 如果 0 或 ""删除行 : code works but very slow

转载 作者:行者123 更新时间:2023-12-02 12:14:55 25 4
gpt4 key购买 nike

问题:

通过录音机和这个论坛的帮助,我编写了一个代码(用于按钮)。 “i”列有(来自第 25 行)“Pcs”或一个数字。我的宏找到 Pcs 并将其更改为“”,然后宏删除“”和 0。填充单元格的长度是可变的,所以我将 500 作为“结束”,但它永远不会达到那个值。如果我运行宏,它可以工作并完成工作,但需要很长时间,特别是因为它必须执行 500 行..

Sub Fix()

Dim intEnd As Integer
Range("M1").Select
Cells.Replace What:="pcs", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
intEnd = 500

Range("I25").Select

Do Until ActiveCell.Row = intEnd

If Int(ActiveCell.Value) = 0 Then
Range(ActiveCell.Row & ":" & ActiveCell.Row).Delete
intEnd = intEnd - 1
Else
ActiveCell.Offset(1, 0).Select
End If

Loop
End sub

我很高兴我可以在论坛和录音机的帮助下制作这个宏,但现在我被困在加速中,没有真正的线索从哪里开始。有人有提示吗?

谢谢,如果需要更多信息或需要更多努力,请告诉我。

最佳答案

要以快速可用的方式完成此操作,您可以使用以下命令:

Sub DelMe()
Dim i As Long, x As Variant, y As Range
With Sheets("Sheet1")
x = .Range("I1", .Cells(Rows.Count, 9).End(xlUp)).Value
If UBound(x) < 25 Then Exit Sub
For i = 25 To UBound(x)
If x(i, 1) = 0 Or x(i, 1) = "" Or InStr(1, x(i, 1), "pcs", vbTextCompare) > 0 Then
If y Is Nothing Then
Set y = .Rows(i)
Else
Set y = Union(y, .Rows(i))
End If
End If
Next
y.EntireRow.Delete xlUp
End With
End Sub

它只是一次删除所有范围(您想要删除的范围)。

如果您有任何疑问,请提出:)

关于excel - 如果 0 或 ""删除行 : code works but very slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36867552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com