|
各位老师,帮看看哪里错了,谢谢。附件中分析表2是用SUMPRODUCT公式计算的结果,因为数据多用公式太慢。
Sub 汇总() '汇总按钮
Dim n%, C%, k%, nn, m, h
Dim x%, i&, Arr, Brr, j&, Crr
Dim Drr, Err
Dim rq$, dw$
Dim qdc, zdc As Single
Dim ar(), br()
Dim mi, ii, y, qd, zd, qd1, zd1 As Integer
Dim xm As String
Dim strsql, myiic, nyr As String
Dim AllCells As Range
On Error Resume Next '忽略错误
Application.ScreenUpdating = False
Set Sht = Worksheets("分析汇总")
Sht.[G10:AC65536].ClearContents '清除内容
Brr = Sht.[A7].CurrentRegion
ReDim Crr(1 To UBound(Brr) - 3, 1 To 24) '数组空间(行,列)
Arr = Sheets("动态病害").[A1].CurrentRegion
Drr = Sheets("静态病害").[A1].CurrentRegion
For j = 4 To UBound(Brr) '从4行开始循环汇总
qd = Brr(j, 4): zd = Brr(j, 5) '起终里程等于Brr数组的第j行第4、5列
dw = Brr(j, 1) & Brr(j, 2) '线名加行别等于Brr数组的第j行第1、2列合并
n = n + 1 '记录汇总表到的行
For i = 2 To UBound(Arr) '统计“动态数据”各级别个数
If Arr(i, 3) & Arr(i, 4) = dw And Arr(i, 5) >= qd And Arr(i, 5) < zd Then '如果线名加行别相同则
C = cx(Arr(i, 6) & Arr(i, 9)) 'C返回汇总表中同统计项目所在列,Arr(i, 2)为超限表中类型,cx为自定义函数
Crr(n, C) = Crr(n, C) + 1
End If
Next
Next
Application.ScreenUpdating = True
End Sub
|
|