Ash*_*hok 0 excel vba excel-vba
嗨,我正在编写一个代码,用于根据标准对数据求和.下面的代码工作正常,但它没有返回值.代码就像这样在excel上工作(= SUMIF($B$1:$DC$1,p,B2:DD2).原因是标准P需要双引号.如何添加双引号P,任何建议将不胜感激
Sub ashok()
Dim LR As Long
Dim Rg, Rg1 As Range
ActiveSheet.Range("a1").Select
LR = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
ActiveCell.Columns("A:A").EntireColumn.Select
Selection.NumberFormat = "0"
ActiveSheet.Range("a1").Select
Set Rg = Range("b1", ActiveSheet.Range("A1").End(xlToRight))
Set Rg1 = Range("b2", ActiveSheet.Range("A2").End(xlToRight))
Range("a1").End(xlToRight).Select
With ActiveCell.Offset(1, 1).Resize(LR)
.Formula = "= SumIf(" & Rg.Address(True, True) & "," & "P" & "," & Rg1.Address(False, False) & ")"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
您的问题的答案是使用Chr(34):
.Formula = "= SumIf(" & Rg.Address(True, True) & "," & Chr(34) & "P" & Chr(34) & "," & Rg1.Address(False, False) & ")"
Run Code Online (Sandbox Code Playgroud)
但是,你有太多的(不必要的,应远离)使用Select,ActiveSheet,ActiveCell和Selection.
如果使用完全限定对象,代码的外观示例:
With Sheets("Sheet3") ' <-- replace with your sheet's name
LR = .Cells(.Rows.Count, "A").End(xlUp).Row
.Columns("A:A").EntireColumn.NumberFormat = "0"
Set Rg = .Range("B1", .Range("A1").End(xlToRight)) '<-- NOT SURE this make sense !
Set Rg1 = .Range("B2", .Range("A2").End(xlToRight)) '<-- NOT SURE this make sense !
' etc. etc.
End With ' closing the With
Run Code Online (Sandbox Code Playgroud)