在Excel中使用动态范围而不使用命名范围

时间:2018-04-24 15:23:34

标签: excel vba excel-vba

我正在尝试编写一个宏,该宏将运行整个工作表并进行相应的计算。

这是我对静态范围的代码:

With .Range("P2:P" & LastRow)
    .Formula = "=SUMIF('Sheet2'!A$2:A$530,'Sheet1'!N2,'Sheet2'!B$2:B$530)"
    .Value = .Value
    Columns("P:P").Select
    Selection.NumberFormat = "0.00"
End With

我对我在这里要做的事情有一个基本的想法,但因为我是VBA的新手,我无法弄明白该怎么做。

这是我正在尝试写的当前代码:

 With .Range("P2:P" & LastRow)
        .Formula = "=SUMIF(Worksheets('Sheet2').Range("A2:A"& LR),'Sheet1'!N2,'Sheet2'!B$2:B$530)"
        .Value = .Value
        Columns("P:P").Select
        Selection.NumberFormat = "0.00"
    End With

然而,为此,它一直在给我一个语句结束错误,我想修复它。

此外,LastRow和LR分别包含两个工作表的最后一个单元格编号。

1 个答案:

答案 0 :(得分:2)

试试这个。你的语法在SUMIF的第一位有点偏差,而你正在硬编码最后一行。请注意,无需选择。

With .Range("P2:P" & LastRow)
    .Formula = "=SUMIF(Sheet2!A$2:A$" & LR & ",'Sheet1'!N2,'Sheet2'!B$2:B" & LR & ")"
    .Value = .Value
    .NumberFormat = "0.00"
End With