VBA:Sumif函数不起作用

时间:2017-07-27 11:32:10

标签: 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

1 个答案:

答案 0 :(得分:5)

您的问题的答案是使用Chr(34)

.Formula = "= SumIf(" & Rg.Address(True, True) & "," & Chr(34) & "P" & Chr(34) & "," & Rg1.Address(False, False) & ")"

然而,您有太多(不必要且应该远离)使用SelectActiveSheetActiveCellSelection

使用完全限定对象时代码的外观示例:

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