【问题标题】:SUMIF formula which includes Lastrow包含 Lastrow 的 SUMIF 公式
【发布时间】:2016-03-11 14:44:06
【问题描述】:

我正在尝试在我的 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

【问题讨论】:

  • 除非您在 criteria_rangecriteria_value i>.

标签: excel vba


【解决方案1】:

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

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

【讨论】:

  • 你我的朋友是绝对的英雄!
  • 没问题 - 您还可以避免选择范围和激活工作表,方法是:Sheets("Recon").Range("B2").Value = "enter formula"
【解决方案2】:

在你的公式中试试这个:

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

【讨论】:

    【解决方案3】:

    由于 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) 定位 Formatting!H:H 中包含数字的最后一行。由于您正在对这一列求和,因此该列下方没有任何行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2018-11-10
      相关资源
      最近更新 更多