2016-07-04 128 views
1

我不知道为什么它给我'438' - 对象不支持此属性或方法错误,在“Sumif”函数行中。总和如果VBA错误'438' - 对象不支持此属性或方法

如何在VBA中执行sumif函数?

Application.WorksheetFunction.SumIfs(Range("N2:N" & RSum), Range("C" & rw), Range("S2:S" & RSum)) 

这里是整个代码:

Sub Macro1() 
    Dim LR As Integer 
    Dim rw As Integer 
    Dim RSum As Integer 

    LR = Range("C" & Rows.Count).End(xlUp).Row 
    RSum = Range("n" & Rows.Count).End(xlUp).Row 
     For rw = 2 To LR 

      If Not IsEmpty(Range("C" & rw).Value) Then 

      Range("G" & rw).Value = Application.WorksheetFunction.SumIfs(Range("N2:N" & RSum), Range("C" & rw), Range("S2:S" & RSum)) 

      End If 

      If Range("G" & rw).Value = 0 Then 
       Range("G" & rw).Value = "-" 
       Range("F" & rw).Value = "No" 
      ElseIf Range("G" & rw).Value <> 0 Then 
       Range("F" & rw).Value = "Yes" 

      End If 
     Next rw 
    End Sub 

Excel版本2002

+0

尝试application.sumifs,往往application.worksheetfunction不起作用。 – Phil

+0

自Excel 2002以来,已经更新了很多,我建议使用更新的版本,以便将来有更多的人可以帮助你,因为大多数人至少拥有Excel 2007. – Michael

回答

0

也许你的第二个和第三个参数进行切换?

第二个参数是前人的精力范围标准范围,和第三个参数应该是标准1

尝试:

Range("G" & rw).Value = Application.WorksheetFunction.SumIfs(Range("N2:N" & RSum), Range("S2:S" & RSum), Range("C" & rw)) 
+0

我发现后立即修复了它,但是仍然给我相同的msg –

+0

@ L.Fim请使用您的更新代码编辑您的原始帖子,因为它仍然有错误。这样其他用户将能够远离这一点,并专注于其他原因 –

+0

我已更新它。 –

0

只是你需要了解SUMIFS公式的标准这似乎是正确的。 Sumifs的顺序是: 1.Sum_range 2.Criteria_range 3.Criteria等。 因此正确语法将是─

范围( “G” & RW)。价值= Application.WorksheetFunction.SumIfs(范围( “N2:N” & RSUM),范围( “S2:S” & RSUM) ,范围( “C” & RW))

更多这样的问题,你可以入住 https://knowledgebase.techandmate.com

感谢,

相关问题