年度VBA类型不匹配函数作为CountIfs条件

时间:2013-11-04 13:00:34

标签: excel vba excel-vba

我从以下代码中收到类型不匹配错误:

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

有人有任何建议吗?

提前致谢....

2 个答案:

答案 0 :(得分: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 & "))"

答案 1 :(得分:0)

使用日期有时候很棘手。你使用的是英文版吗? 您可以尝试在Excel中编写相同的公式代码并在将其放入VBA之前对其进行测试。您也可以尝试以下方式:

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