excel - 如何使用 sumif 函数在 VBA 代码中使用变量
问题描述
我下载了一个始终具有不同行数的数据集。我将两列存储为变量,即导入和月份。然后我需要运行一个Sumif
公式,按月份汇总进口值。我正在编写一个Sumif
使用两个变量并引用其左侧的单元格的公式。
然而,单元格的位置会根据数据集大小的变化而变化。因此,我编写了一个代码来选择列上的最后一个活动单元格,然后选择向下 3 行的单元格。
当用变量和单元格编写公式时,它给了我一个错误。请帮助抱歉任何错别字第一次这样做。
我选择范围 D 中的所有活动单元格并将它们存储为月份,我对导入执行相同的操作。然后使用范围我在列 M 上找到最后一个活动单元格,然后使用选择单元格向下 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