将范围中的每个值乘以常量,但跳过空白单元格

时间:2016-08-13 08:35:52

标签: excel vba excel-vba

我需要一个简单的快速解决方案,用于将范围中的所有值乘以VBA代码中的数值。我知道这个解决方案:Multiply Entire Range By Value?

Set rngData = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")
rngData = Evaluate(rngData.Address & "*2")

但它有一个很大的缺点 - 如果原始单元格为空白,则结果为零。如何强制它跳过空白值?

我想避免循环遍历值,因为它非常慢。

1 个答案:

答案 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