我从以下代码中收到类型不匹配错误:
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 :(得分: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(.....)"