|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 玉阳山人 于 2018-9-8 15:40 编辑
大神们:下面的代码只能执行--从数据源G5【开始行号】,至G20002【最后数据行号】 中间没有空白单元格的计算。一旦中间出现空白单元格【G5:G20002之间抹去任何一个数据】,结果输出列I5:K11980就会全部变成空白:
感觉是 If arr(i, 1) = "" Then Exit For 这一句的问题。但去掉这一句后,中间的空格会被默认当做0来计数。而我需要的是:空格就是无、没有的意思,不能默认为是数字0而参与I4指定的0的次数累计!如:当K1为指定为36时,I5:K5的出现次数之为33,少了的3个自然就是3个空白单元格。
Public Function COUNTIFZQ(qy As Range, zq, tj, Optional x = 0)
Application.Volatile
arr = qy
ReDim brr(1 To UBound(arr), 1 To 1) As Variant
j = 0
For i = 1 To UBound(arr)
brr(i, 1) = 0
Next
For i = 1 To UBound(arr)
If arr(i, 1) = "" Then Exit For
If (i Mod zq) = 1 Then j = j + 1
If arr(i, 1) = tj Then
brr(j, 1) = brr(j, 1) + 1
End If
Next
For i = j + x To UBound(arr)
brr(i, 1) = ""
Next
COUNTIFZQ
End Function
按指定周期 进行 条件计数.zip
(345.75 KB, 下载次数: 6)
恳请大神们修改代码,使公式能够忽略数据源 中间的空格,只对指定周期内数据区域的非空单元格进行计数,并显示正确的计算结果。
|
|