gpt4 book ai didi

excel - VBA - 避免循环

转载 作者:行者123 更新时间:2023-12-04 22:31:20 24 4
gpt4 key购买 nike

我在 Excel 工作表中分别在 A、B 和 C 列中有以下数据。

+-----------+--------------+----------------+
| RangeName | Clear? | Value if Clear |
+-----------+--------------+----------------+
| Name1 | DO NOT CLEAR | |
| Name2 | | 6 |
| Name3 | | 7 |
| Name4 | DO NOT CLEAR | |
| Name5 | DO NOT CLEAR | |
| Name6 | DO NOT CLEAR | |
| Name7 | DO NOT CLEAR | |
| Name8 | DO NOT CLEAR | |
| Name9 | | 5 |
| Name10 | | 9 |
+-----------+--------------+----------------+

有一个“清除”宏检查每个 excel 范围名称,如果 B 列显示“请勿清除”,那么它将跳过并且什么也不做,如果它是空白的,那么它将清除范围名称并将范围名称值设置为列C、代码如下:
For i = 1 To MaxRowCount

Select Case Range("RngeTbl").Cells(i, 2).Value
Case "DO NOT CLEAR" 'do nothing
Case Else 'set to default value
Range(Range("RngeTbl").Cells(i, 1).Value).Value = Range("RngeTbl").Cells(i, 3).Value
End Select

Next i

但是,范围名称的数量正在大量增加,现在我有 32571 个范围名称。

有没有办法可以加快这个宏?我一直在尝试将列放入数组并以某种方式检查,但我没有运气。

请提供任何帮助!

最佳答案

下面的代码应该稍微好一点(如果在 Application.ScreenUpdating = Fasle 的上下文中运行,等等):

Dim A As Variant
Set A = Range("RngeTbl").Value
For i = 1 To UBound(A)
If A(i,2) <> "DO NOT CLEAR" Then Range(A(i,1)).Value = A(i,3)
Next i

如果 MaxRowCount小于范围内的行数,那么您当然可以使用它而不是 UBound(A)在循环。

关于excel - VBA - 避免循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52534823/

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