2013-02-02 110 views
0

我想總結一行有偏差的事實,即另一行與用戶定義的變量具有相同的月份。我相信sumif函數是我最好的選擇,但它似乎不適合我。我希望它明顯看到的行是日期格式的日期(使用.numberformat =「ddd mm/dd」),但sumif似乎無法挑出每個單元格中的月份。這裏是我到目前爲止的代碼:SumIf使用VBA中的日期和範圍

Dim cMade As Integer 
Dim sDate As Date 
cMade = cMade + Application.WorksheetFunction.SumIf(ActiveSheet.Range("B1:RC1"), Month(sDate), ActiveSheet.Range("B30:RC30")) 

正如你可以看到SDATE是通過用戶窗體用戶imputs然後我轉換,使用dateserial的日期。和B1-RC1是我希望它看的日期。如果月份匹配的話,Range B30-RC30就是我希望它獲得的金額(我之所以把它作爲+ cMade的原因是因爲它是在一個循環中循環遍歷紙張)。

此編碼是否正確?我一直在搞它,並尋找幾個小時的替代品,但我似乎不能提供任何東西!

回答

1

只是假設這是你的代碼的一部分,我只能猜測休息,請嘗試以下更正:

  1. 我想你應該定義Range("B30,RC30")作爲Range("B30:RC30") - 逗號這裏看起來像一個錯字根據描述。
  2. Application.SumIf替換爲Application.WorksheetFunction.SumIf

作爲補充,考慮更精確地定義範圍,例如,通過Worksheets("Sheet1").Range("A1:C10")ActiveSheet.Range("A1:C10")語法。但是,這可能是一個額外的措施 - 我沒有看到你的代碼的其餘部分。

希望這有點幫助。

+0

嗯感謝您的幫助,我確實需要糾正這些事情,但出於某種原因cMade始終爲0,好像我沒有將sumif指向正確的總和行(我確信我是)。 – MainTank

+0

你能分享一下你現在的'cMade = ...'字符串嗎? –

+0

我注意到如果我嘗試在工作表中使用sumif函數來測試ex:= Sumif(B1:J1,Month(1),B30:J30),它仍然會給我一個零值。 我用我的新字符串更新了原始問題。 – MainTank