2013-03-20 55 views
1

当我运行下面转换SUMIF forimula从Excel宏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 

码宏运行良好,但是当我将其转换成宏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,类型missmatch

任何线索,为什么发生这种情况,如何解决? - 套管关闭

感谢

问题NO 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

+0

什么是**呢? – useR 2014-10-30 09:06:53

回答

0

SumIfSumIfs。参数的顺序不同,从而导致错误。

SumIfs以范围(多单元格范围)和标准(单单元格)组成的范围为起点(多单元格范围)开始。

SumIf从Criteria Range开始,然后是Criteria(单个单元格),然后是要合计的范围(多单元格范围)。

修复它通过相应调换参数的顺序,或者使用其它功能(SumIfSumIfs

+0

它的作品!感谢兄弟...看到你下一个问题:) – 2013-03-25 04:31:01