2013-11-04 29 views
0

我從下面的代碼得到一個類型不匹配錯誤:VBA類型不匹配的年份作爲COUNTIFS標準

blattZFq3.Cells(month, siaw) = Application.WorksheetFunction.CountIfs(Worksheets(i).Range("AF10:AF290"), month, Year(Worksheets(i).Range("AE10:AE290")), minYear) 

我猜它與第二個條件的問題,更具體的Year功能因爲代碼在以前的版本中工作得很好,只有第一條標準並且使用了countif

minYear被聲明爲Variant並已被前一個函數賦值爲2012。

基本上我想在範圍blattZFq3細胞含有許多匹配month一列中出現的次數,但前提是同一行中的日期,但不同的列當年匹配minYear

有沒有人有任何建議?

在此先感謝....

回答

0

與日期一起工作有時是棘手的。你使用英文版嗎? 您可以嘗試在Excel中編寫相同的公式代碼並在放入VBA之前對其進行測試。您也可以嘗試這樣的:

blattZFq3.Cells(month, siaw) = "=CONTIFS(.....)" 
1

你不能做這個功能的陣列:Year(Worksheets(i).Range("AE10:AE290")),因爲它是期待一個範圍的第二區域進行檢查。
此外,我會避免使用Month這個詞作爲變量名稱,因爲它也是一個函數的名稱。

您必須使用3個標準編寫函數以避開限制,或者將公式寫入目標區域。

功能有3個標準:

blattZFq3.Cells(MyMonth, siaw) = _ 
    WorksheetFunction.CountIfs(Worksheets(i).Range("AF10:AF290"), MyMonth, _ 
    Worksheets(i).Range("AE10:AE290"), ">=" & DateSerial(minYear, 1, 1), _ 
    Worksheets(i).Range("AE10:AE290"), "<=" & DateSerial(minYear, 12, 31)) 

由於公式插入到單元格:

blattZFq3.Cells(MyMonth, siaw).Formula = _ 
    "=SUMPRODUCT(--(SheetName!AF10:AF290=" & MyMonth & ")," & _ 
    "--(YEAR(SheetName!AE10:AE290)=" & minYear & "))" 
+0

我在此之前解決它有點不同......我在的開頭附加功能通過日期的列(總共4個),並將年份編號寫入使用部分右側的4列中。然後,我可以像我在這個月一樣引用這些列。感謝關於變量名稱的提示,我會牢記這一點...... – user2952558