将excel forimula从excel转换为macro vba – Prolem 2:转换单元格范围

当我正在运行下面的代码

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 

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

 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 

它给了我错误 – > 运行types错误13,types错配

任何线索为什么发生这种情况,以及如何解决它? – 封闭

谢谢

问题2

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

  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

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

SumIfs从以Criteria范围(多个单元格范围)和Criteria(单元格)对组成的多个单元格范围开始。

SumIf从Criteria Range开始,然后是Criteria(单个单元格),然后是总结范围(多个单元格范围)。

通过交换相应的参数顺序或使用其他函数( SumIf不是SumIfs