Vba 在Excel中使用动态范围而不使用命名范围
我正在尝试编写一个宏,它将在工作表的整个长度上运行,并相应地进行计算 这是我为静态范围编写的代码:Vba 在Excel中使用动态范围而不使用命名范围,vba,excel,Vba,Excel,我正在尝试编写一个宏,它将在工作表的整个长度上运行,并相应地进行计算 这是我为静态范围编写的代码: 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
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分别包含两张工作表的最后一个单元格编号。试试这个。在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
删除SELECT时做得很好-您可能还可以删除
.Value=.Value
-这似乎不起作用much@dbmitch-用其结果替换实际公式(即仅相当于复制/粘贴特殊值)。