销售详情
月 | 金额 |
---|---|
一月 | 120 |
三月 | 250 |
四月 | 380 |
六月 | 510 |
一月 | 640 |
三月 | 770 |
四月 | 900 |
六月 | 1030 |
一月 | 1160 |
三月 | 1290 |
四月 | 1420 |
一月 | 1550 |
注意:所有vba代码都写在下面.........
Sub sum_if_Function()
Dim i As Long
Dim j As Long
'Note:rng means range**
Dim rng1(4 To 15) As Variant
Dim rng2(4 To 15) As Long
Dim Result As Long
'Note: This below code write for store all Month Name**
For i = 4 To 15
rng1(i) = Cells(i, 3).Value
Next i
'Note: This below code write for store all Each Month Sale Amount**
For j = 4 To 15
rng2(j) = Cells(i, 4).Value
Next j
'Note: This below code write for display January month total sales**
For i = 4 To 15
Result = Application.WorksheetFunction.SumIf(rng1(i), "January", rng2(i))
Next i
MsgBox "January Month Total Sales Amount:-" & Result
End Sub
这是我的VBA代码,我试图获得一月份的总销售额,但是当我运行此代码时,vba excel编译显示为按摩...运行时错误“424”需要对象
我也尝试使用二维数组来获得这个结果,但我失败了
我需要使用数组的良好且简单的代码,以便我可以获得结果并且还需要建议
您必须将范围传递给
SumIf
- 而不是数组中的 values!
试试这个:
Sub sum_if_Function()
Dim rgMonths As Range
Set rgMonths = ActiveSheet.Range("C4:C15")
Dim rgAmount As Range
Set rgAmount = ActiveSheet.Range("D4:D15")
Dim result As Single
result = Application.WorksheetFunction.sumIF(rgMonths, "January", rgAmount)
MsgBox "January Month Total Sales Amount:-" & result
End Sub
如果您的原始数据在工作表中,首选版本是使用@Ike建议的
SumIF
函数。Sub Sum_by_months()
Dim rgMonths As Variant
rgMonths = ActiveSheet.Range("C4:C15").Value
Dim rgAmount As Variant
rgAmount = ActiveSheet.Range("D4:D15").Value
Dim result As Variant
With Application ' not .WorksheetFunction
result = .SumProduct(.IfError(.Match(rgMonths, Array("January"), 0), 0), rgAmount)
End With
MsgBox "January Month Total Sales Amount: " & result
End Sub
小心。不要使用
WorksheetFunction
对象,月份名称必须是数组。