0

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

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

有人有什么建议吗?

提前致谢....

4

2 回答 2

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 & "))"
于 2013-11-04T13:46:30.663 回答
0

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

blattZFq3.Cells(month, siaw) = "=CONTIFS(.....)"
于 2013-11-04T13:13:01.150 回答