2017-02-10 20 views
1

'數據庫中的數字行每個月都會更改變量lastCode。 「中的代碼運行沒有問題,當我手動把最後一排即$M$22510$O$22510然而當我把在SUMIFS可變& lastCode收到錯誤嘗試使用SUMIFS總結數據庫 - VBA

運行時」 1004'application定義或定義的對象。

請告訴我在下面的代碼中我的SUMIFS有什麼問題。

Sub SumGroups() 
    Worksheets("Database").Activate 
    Dim lastCode, lastFiltCode As Integer 
    Dim Formula As String 
    'Determine Last Row in Column O (Unfiltered Codes) 
    lastCode = Range("O" & Rows.Count).End(xlUp).Row 
    'Filter Unique Codes into Column A Sheet2 
    Range("O1:O" & lastCode).AdvancedFilter Action:=xlFilterCopy, _ 
     CopyToRange:=Sheet2.Range("A1"), Unique:=True 
    'Determine last Row in Column A (Filtered Codes) 
    Worksheets("Sheet2").Activate 
    lastFiltCode = Sheet2.Range("A" & Rows.Count).End(xlUp).Row 

    'Place SUMIF Formula in Column B Sheet2 

    Worksheets("Sheet2").Range("B2:B" & lastFiltCode).Formula = _ 
     "=SUMIFS(Database!$M$2:$M$ & lastCode,Database!$O$2:$O$ & lastCode,A2)" 
End Sub 
+1

你需要連接VBA中的公式 - 「lastCode」並不意味着公式本身:'「= SUMIFS(數據庫!$ M $ 2:$ M $」 &lastCode&「,Database!$ O $ 2:$ O $」&lastCode&「,A2)」' – Comintern

+0

謝謝!這樣可行。共產國際你是一個學者和紳士。 – Anthony

回答

1

你所尋找的是:

"=SUMIFS(Database!$M$2:$M$" & lastCode & ",Database!$O$2:$O$" & lastCode & ",A2)"

這樣做的原因是,當你把東西放到「引號」 VBA將它讀成只是文字,你可以使用Debug.Print "=SUMIFS(Database!$M$2:$M$ & lastCode,Database!$O$2:$O$ & lastCode,A2)"和按Ctrl + G或在VBA中選擇「查看」>「Immidiate Window」,它會告訴你進入Excel的究竟是什麼

+0

感謝Mr.Burns先生的解釋 – Anthony