SUMIF公式包括Lastrow

时间:2016-03-11 14:44:07

标签: excel vba

我试图在我的VBA中输入SUMIF公式但是细胞的范围可能会根据&#;; Lastrow'而变化。在另一个标签上。我能够让Lastrow没问题,但问题是试图进入我的SUMIF公式。 ' LASTROW'值应取代细胞Q156& H156。希望这是有道理的。欢迎任何建议。

见下文:

Sub UpdateReconData()

    Dim Lastrow6 As Integer

    'gets last Row on Formatting Spreadsheet
    Sheets("Formatting").Select
    Lastrow6 = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row

    Sheets("Recon").Select

    Range("B2").Select
    ActiveCell.Value = _
        "=SUMIF(Formatting!$Q$2:$Q$156(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$156)"

End Sub

3 个答案:

答案 0 :(得分:0)

您可以将Lastrow6变量连接到公式字符串中。您可以使用&符号(&)符号将字符串与变量连接起来。

Range("B2").Value = _
      "=SUMIF(Formatting!$Q$2:$Q$" & Lastrow6 & _
      "(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$" & Lastrow6 & ")"

答案 1 :(得分:0)

在你的公式中试试这个:

"=SUMIF(Formatting!$Q$2:$Q$" & Lastrow6 & "(Recon!$A2&Recon!B$1),Formatting!$H$2:$H$" & Lastrow6 & ")"

答案 2 :(得分:0)

由于 lastRow6 位于几个地方,因此Range.Replace method比字符串连接更容易。

Sub UpdateReconData()
    Dim lastRow6 As Long

    'gets last Row on Formatting Spreadsheet
    With Worksheets("Formatting")
        lastRow6 = .Cells(Rows.Count, "B").End(xlUp).Row
    End With

    With Worksheets("Recon")
        .Range("B2").Formula = _
            Replace("=SUMIF(Formatting!$Q$2:$Q$XYZ, $A2&B$1, Formatting!$H$2:$H$XYZ)", _
                    "XYZ", lastRow6)
    End With
End Sub

我不完全确定您为什么不使用SUMIF function中的完整列引用,但我确定还有其他行包含可能会混淆结果的数据。完整列引用不会像对SUMPRODUCT function那样减慢SUMIF / SUMIFS的速度。理想情况下, lastRow6 可以构建到SUMIF公式中,如下所示。

    With Worksheets("Recon")
        'never have to do this again.
        .Range("B2").Formula = _
            "=SUMIF(Formatting!$Q$2:INDEX(Formatting!$Q:$Q, MATCH(1e99, Formatting!$H:$H)), " & _
                "$A2&B$1, " & _
                "Formatting!$H$2:INDEX(Formatting!$H:$H, MATCH(1e99, Formatting!$H:$H)))"
    End With

MATCH(1e99, Formatting!$H:$H)找到格式化中的最后一行!H:H包含一个数字。由于您要对此列求和,因此下面没有任何行。