【发布时间】:2021-01-06 08:30:14
【问题描述】:
我目前正在编写质量问题日志,该日志将在我的工作场所用于跟踪质量问题,并通过仪表板将特定数据输出给管理层。
我有一个计算,遍历日志中的行并计算满足特定条件的行数。它本质上是一个 CountIf 函数,但带有一个 For 循环。然后将计数转储到一个单元格中,然后计算移至该范围内的下一个值。
我目前在日志中有 95 个条目,而且计数运行得很慢。随着我们越来越关注质量问题,代码运行速度不可避免地会变得更慢。
这是我正在运行的代码示例:
For Each cell In mnthRng
monthVal = cell.value
YearVal = cell.Offset(-1, 0).value
num = 1
Total_prjctCount = 0
For i = LBound(prjcts) To UBound(prjcts)
PrjctName = prjcts(i)
included_in_calcs = prjctYesNo(num, 1)
If included_in_calcs = "YES" Then
Total_Count = 0
For j = 8 To IDLastRow
If QCRLogSheet.Range("AI" & j) = monthVal _
And QCRLogSheet.Range("AK" & j) = YearVal _
And QCRLogSheet.Range("D" & j) = PrjctName Then
Total_Count = Total_Count + 1
Else
End If
Next j
Total_prjctCount = Total_Count + Total_prjctCount
End If
num = num + 1
Next i
cell.Offset(1, 0).value = Total_prjctCount
Next cell
只是为了给你一些关于代码的更多信息:
mnthRng 是包含不同月份的单元格范围。
数组 prjcts 包含我们现场的各种不同项目的名称,如果有人取消了仪表板上的“包含在计算中”框,我可以按项目对数据进行排序 p>
我读过这篇文章以加快这种性质的计算,而不是循环每个单元格,我可以将范围添加到数组中,并在数组中进行计数。不幸的是,我不确定如何将数据范围添加到数组中,然后循环遍历它。
任何帮助将不胜感激!
【问题讨论】: