如何使用 sumif 函数在 VBA 代码中使用变量

How to use variables in a VBA code using the sumif function

我下载的数据集总是有不同的行数。我将两列存储为变量,即进口和月份。然后我需要 运行 一个 Sumif 公式,按月对进口价值求和。我正在编写一个 Sumif 公式,该公式使用两个变量并引用其左侧的单元格。

但是,单元格的位置会根据数据集大小的变化而变化。因此,我将代码写入 select 列中的最后一个活动单元格和 select 向下 3 行的单元格。

使用变量和单元格编写公式时出现错误。第一次这样做时,请对任何拼写错误感到抱歉。

我 select 范围 D 中的所有活动单元格并将它们存储为月份,我对导入执行相同的操作。然后使用范围找到 M 列上的最后一个活动单元格,并使用 select 单元格向下 3 行,我希望在其中编写我的公式。

请看我的代码,看看我做错了什么,我是一个新手编码员。

Sub Importaciones()
'
' Importaciones Macro
'




    Dim LastRow As Long

        LastRow = Range("L" & Rows.Count).End(xlUp).Row 

    Dim Months As Long

        Months = Range("D2", Range("D2").End(xlDown)).Select

    Dim Imports As Long

        Imports = Range("M2", Range("M2").End(xlDown)).Select

     Dim LastRowM As Long

      LastRowM = Range("M" & Rows.Count).End(xlUp).Row

      Range("M" & LastRowM + 3).Formula = "=sumif(" & Months & ", " & 
      Range("L" & LastRow + 3) & ", " & Imports & ")"

End Sub

为了让公式起作用,我选择的月份的总和出现了

根据所有评论:

Sub Importaciones()

    With Worksheets("Sheet1") 'Change to your sheet
        Dim LastRow As Long
            LastRow = .Range("L" & .Rows.Count).End(xlUp).Row

        Dim Months As Range
            Set Months = .Range("D2", .Range("D2").End(xlDown))

        Dim Imports As Range
            Set Imports = .Range("M2", .Range("M2").End(xlDown))

         Dim LastRowM As Long
            LastRowM = .Range("M" & .Rows.Count).End(xlUp).Row

            .Range("M" & LastRowM + 3).Formula = "=sumif(" & Months.Address(0, 0) & ", " & .Range("L" & LastRow + 3).Address(0, 0) & ", " & Imports.Address(0, 0) & ")"
    End With
End Sub