2013-03-20 87 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