我需要一个简单的快速解决方案,用于将范围内的所有值乘以 VBA 代码中的数值。我知道这个解决方案:按值乘以整个范围?
Set rngData = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")
rngData = Evaluate(rngData.Address & "*2")
Run Code Online (Sandbox Code Playgroud)
但它有一个很大的缺点——如果原始单元格是空白的,则结果为零。如何强制它跳过空白值?
我想避免遍历这些值,因为它非常慢。
你可以使用你现有的方法,Evaluate但让它变得更聪明——它可以接受条件等,所以只需包括一个ISBLANK. 此示例在范围内的空白和非空白单元格的组合上进行测试A1:C3- 只需更新您的范围并尝试一下:
Option Explicit
Sub Test()
Dim rng As Range
Set rng = Sheet1.Range("A1:C3")
'give the name a range so we can refer to it in evaluate
rng.Name = "foo"
'using Evaluate
rng = Evaluate("IF(ISBLANK(foo),"""",foo*2)")
'using [] notation
'preferred IMO as dont need to escape "
rng = [IF(ISBLANK(foo),"",foo*2)]
End Sub
Run Code Online (Sandbox Code Playgroud)