Sub FPY()
Dim arr()
Dim arr1()
Dim arr2()
Dim arr3()
arr = Range("a2:e19844") '原始表 i
arr1 = Range("m2:m350") '机种表 x
arr2 = Range("n2:n72") '站别表 y
arr3 = Range("s2:v20000") '生成表
Dim FTotal As Integer '投入数量
Dim FPass As Integer '良品数量
For x = 2 To 350 '遍布机种
For y = 2 To 72 '遍布站别
For i = 2 To 19844 '遍布原始表
If arr(i, 1) = arr1(x, 1) Then
If arr(i, 2) = arr2(y, 1) Then
FTotal = FTotal + arr(i, 5)
FPass = FPass + arr(i, 3)
End If
End If
Next i
arr3(y, 1) = arr1(x, 1)
arr3(y, 2) = arr2(y, 1)
arr3(y, 3) = FTotal
arr3(y, 4) = FPass
Next y
Next x
End Sub
VBA编程数据分析,怎么总出现下标超出?
答案:2 悬赏:0 手机版
解决时间 2021-03-07 16:25
- 提问者网友:沦陷
- 2021-03-07 04:47
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-03-07 06:03
循环是从2开始的,实际循环到底,x=351;Y=73;i=19845,所以下标超出。
For x = 2 To 349 '遍布机种
For y = 2 To 71 '遍布站别
For i = 2 To 19843 '遍布原始表
这样就可以了。
For x = 2 To 349 '遍布机种
For y = 2 To 71 '遍布站别
For i = 2 To 19843 '遍布原始表
这样就可以了。
全部回答
- 1楼网友:人间朝暮
- 2021-03-07 07:25
这个地方的下标越界,有两种可能,一是因为不存在stemplatename名字的工作薄造成workbooks(stemplatename)越界,二是effvar(i)值不合理造成工作表sheets(effvar(i))越界。
遇到越界的时候你选择“调试”,添加对上面这些变量的监视,你就知道具体是什么原因导致了越界,然后才能确定解决方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯