具有多个字符串条件的VBA中的SUMIFS

时间:2014-02-24 18:39:05

标签: excel excel-vba sumifs vba

我有一个我写的Sub,其中包含一个SUMIFS语句。当yearRange与gEvent值匹配并且yearRange.Offset(0,2)与gEvent.Offset(0,2)Value匹配时,我想要求总和某个列(yearRange.Offset(0,i + 3))。我试过谷歌搜索问题,并检查了MSDN网站(这不是很具描述性),无法使该功能工作。我唯一可能的想法是我使用的标准是字符串而不是整数。因此gEvent.Value可以是“ABCD”,而gEvent.Offset(0,2)可以是“DEFG”。

当我尝试运行代码时,它在这里打破:

itemPY = Application.WorksheetFunction.SumIfs(yearRange.Offset(0, i + 3), yearRange.Value, "=" & gEvent.Value & """, yearRange.Offset(0, 2), " = " &  gEvent.Offset(0, 2).Value & """)

我收到的错误是: 运行时错误'424': 需要对象

以下是完整形式的子句:

Sub CombineData()

Dim eventSheet As Worksheet
Dim yearSheet As Worksheet
Dim yearRange As Range
Dim eventRange As Range
Dim gYear As Range
Dim gEvent As Range
Dim i As Integer
Dim itemCount As Integer
Dim itemPY As Integer

Set eventSheet = ThisWorkbook.Sheets("previousEvent")
Set yearSheet = ThisWorkbook.Sheets("previous12")
Set eventRange = eventSheet.Range("A3", eventSheet.Range("A3").End(xlDown))
Set yearRange = yearSheet.Range("A4", yearSheet.Range("A4").End(xlDown))


    For Each gEvent In eventRange

        i = 0

        gEvent.Offset(0, 16).Value = gEvent.Value
        gEvent.Offset(0, 17).Value = gEvent.Offset(0, 1).Value
        gEvent.Offset(0, 18).Value = gEvent.Offset(0, 2).Value


        itemCount = Application.WorksheetFunction.CountIf(yearRange, gEvent.Value)

        For i = 0 To 11

            itemPY = Application.WorksheetFunction.SumIfs(yearRange.Offset(0, i + 3), yearRange.Value, "=" & gEvent.Value & """, yearRange.Offset(0, 2), " = " &  gEvent.Offset(0, 2).Value & """)

            gEvent.Offset(0, 19 + i).Value = itemPY / Item

         Next i

    Next gEvent


End Sub

我能得到的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

不需要所有引用:

itemPY = Application.WorksheetFunction.SumIfs(yearRange.Offset(0, i + 3), _
                   yearRange,  gEvent.Value, _
                   yearRange.Offset(0, 2), gEvent.Offset(0, 2).Value)