1

当我在下面运行代码时

Sub test2() Dim i, 
Rownumber As Integer 
Rownumber = Sheets("Sheet4").Range("A65536").End(xlUp).Row

    For i = 2 To Rownumber

            Sheets("Sheet4").Cells(i, 3).Formula = "=sumif(Sheet3!$A$2:$A$10, Sheet4!A2, Sheet3!$B$2:$B$10)"

        Next i
         End Sub

宏运行良好,但是当我将其转换为宏 VBA 时:

Sub test2()
Dim i, Rownumber As Integer
Rownumber = Sheets("Sheet4").Range("A65536").End(xlUp).Row

For i = 2 To Rownumber

        Sheets("Sheet4").Cells(i, 3).Value = Application.WorksheetFunction.SumIfs(Sheets("Sheet3").Range("A2:A10"), Sheets("Sheet4").Cells(2, 1), Sheets("Sheet3").Range("B2:B10"))

    Next i

End Sub

它给了我错误->运行类型错误13,类型不匹配

任何线索为什么会发生这种情况以及如何解决?--封闭式

谢谢

问题二

下面的代码在执行时运行良好:

 For j = 3 To Colnumber

            For i = 2 To Rownumber
            Sheets("Sheet2").Cells(i, j).Value = Application.WorksheetFunction.SumIfs(Sheets("3G").**Range("F2:F6991")**, Sheets("3G").Range("E2:E6991"), Sheets("Sheet2").Cells(i, 1))


            Next i

        Next j

但是为什么当我把它改成:

Sheets("Sheet2").Cells(i, j).Value = Application.WorksheetFunction.SumIfs(Sheets("3G").**Range(Cells(2, 6), Cells(6991, 6))**, Sheets("3G").Range("E2:E6991"), Sheets("Sheet2").Cells(i, 1))

它给了我错误:错误1004,应用程序定义或定义对象错误??

TIA

4

1 回答 1

0

SumIf不是SumIfs。参数的顺序不同,因此导致错误。

SumIfs从要汇总的范围(多单元格范围)开始,然后是成对的条件范围(多单元格范围)和条件(单个单元格)。

SumIf从条件范围开始,然后是条件(单个单元格),然后是要汇总的范围(多单元格范围)。

通过相应地交换参数的顺序或使用其他函数(SumIf不是SumIfs)来修复它

于 2013-03-20T09:32:02.953 回答