SumIf在VBA中使用日期和范围

时间:2013-02-02 13:29:00

标签: excel vba

我试图总结一行,因为另一行与用户定义的变量具有相同的月份。我相信sumif函数是我最好的选择,但它似乎对我不起作用。我希望它看的行显然是一行日期格式的日期(使用.numberformat =“ddd mm / dd”)但是sumif似乎无法在每个单元格中选出月份。这是我到目前为止的代码:

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

正如您所看到的,sDate是用户通过userform投入的日期,然后我使用dateserial转换它。和B1-RC1是我想要它看的日期。和范围B30-RC30是我希望它在月份匹配时获取的总和(我将它作为+ cMade的原因是因为它在循环中循环通过工作表)。

这段代码是否正确?我一直在搞乱它,并寻找几个小时的替代品,但我似乎无法想出任何东西!

1 个答案:

答案 0 :(得分:1)

假设这只是代码的一部分,我可能只猜测其余部分,请尝试以下更正:

  1. 我认为你应该将Range("B30,RC30")定义为Range("B30:RC30") - 根据描述,这里的逗号看起来像拼写错误。
  2. Application.SumIf替换为Application.WorksheetFunction.SumIf
  3. 作为补充,请考虑更精确地定义范围,例如通过Worksheets("Sheet1").Range("A1:C10")ActiveSheet.Range("A1:C10")语法。但是,这可能是一个额外的措施 - 我没有看到你的其余代码。

    希望这在某种程度上有所帮助。