我有一个宏,可以查找 Excel 电子表格中 N 列中值为“接受”的所有行,并将其值调整为“拒绝”。
我的宏正在运行,但它运行非常慢,我的宏实际上花了 15 分钟以上才运行了 20,000 多行,将单元格值从“接受”更改为“拒绝”,这太慢了我很期待任何客户等待(20,000 是我期望客户拥有的数据行数的上限)。
下面是我的宏中的代码,我想知道是否有人有任何想法如何让它运行得更快。
' Select cell N2, *first line of data*.
Range("N2").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value = "Accept" Then
ActiveCell.Value = "Reject"
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
最佳答案
感谢大家的帮助。我使用了你们发布的一些链接和代码(特别是 Doug Glancy 在评论中发布的链接,希望我可以选择评论作为接受的答案)来提出一些几乎可以立即运行的新代码。对于对其工作原理感兴趣的任何人,这里有新的 VBA 代码。
Dim dat As Variant
Dim rng As Range
Dim i As Long
Set rng = Range("N2:N" & ActiveSheet.UsedRange.Rows.Count)
dat = rng ' dat is now array
For i = LBound(dat, 1) To UBound(dat, 1)
If dat(i, 1) = "Accept" Then
dat(i, 1) = "Reject"
End If
Next
rng = dat ' put new values back on sheet
关于excel - 如果单元格为某个值,使用 Excel 宏快速替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20227402/