【发布时间】:2022-01-21 23:13:52
【问题描述】:
我需要运行一个宏,将数组中包含“0”的所有单元格替换为空白值 同时,包含 0 和其他文本/数字的单元格,例如。不应考虑“Test01”并保持原样
这是我写的代码,但在 3k 行表上确实很慢
Set sht = ActiveWorkbook.Sheets("Nuova Base Dati")
sht.Activate
Set rng = Range(Range("B2"), Range("E" & sht.UsedRange.Rows.count))
For Each cell In rng
If cell.Value = "0" Then cell.Value = ""
Next
有什么建议可以加快速度吗?
【问题讨论】:
-
在整个范围内使用
Range.Replace,不循环? -
如果
Replace()做不到,请设置一个数组dim arr as variant,并将该范围设置为数组arr = Range(Range("B2"), Range("E" & sht.UsedRange.Rows.count)),然后处理该数组。 -
在循环
Application.ScreenUpdating = False和Application.Calculation = xlCalculationManual上方和循环Application.Calculation = xlCalculationAutomatic下方添加两行 -
感谢我通过@Toddleson 输入解决了它 :)
-
@Matteo - 这个建议就像在动脉伤口上贴创可贴。答案不是逐个单元循环。