excel - 如果单元格为某个值,使用 Excel 宏快速替换文本

标签 excel vba

我有一个宏,可以查找 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/

相关文章:

sql-server - Excel 2010 与 Excel 2013 VBA 存储过程

vba - 运行时错误 '9' : Subscript out of range with Dynamic Array

excel - Excel 公式,查找最大值并检查多个条件

Excel VBA 更改边框颜色 - 仅可见边框

excel - 使用Excel中的VBA将所有工作表的填充颜色设置为 "No Fill"

excel - 在Excel中将0.000数字转换为毫秒

c# - 使用 C# 获取 Excel 单元格区域中的特定文本

一次结束宏的VBA代码

c++ - VBA 中的 Qt5 Dll 出现错误运行时错误 453

vba - Excel 将一系列单元格值复制到剪贴板