我需要一个简单的快速解决方案,用于将范围中的所有值乘以VBA代码中的数值。我知道这个解决方案:Multiply Entire Range By Value?
Set rngData = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")
rngData = Evaluate(rngData.Address & "*2")
但它有一个很大的缺点 - 如果原始单元格为空白,则结果为零。如何强制它跳过空白值?
我想避免循环遍历值,因为它非常慢。
答案 0 :(得分:4)
您可以将现有方法与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