全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
6252 9
2016-03-02
Sub 罗列不及格的成员()
Dim i As Integer, j As Integer, rng As Range, arr1, arr2() 'arr2()为指定的动态变量
Set rng = Range([a2], Cells(Rows.Count, 2).End(xlUp)) '复制后直接在内存调用,而不用再到单元格调用,加快运行速度
ReDim arr2(1 To WorksheetFunction.CountIf(rng, "<60"), 1 To 2) '定义动态数组
arr1 = rng.Value
For i = 1 To UBound(arr1) '终止值为数组第一维的上标
    If arr1(i, 2) < 60 Then
    j = j + 1   
     arr2(j, 1) = arr1(i, 1)'提示下标越界
    arr2(j, 2) = arr1(i, 2)

    End If
Next i
    Range("d1:e" & j) = arr2
End Sub
我按照书本上写的,可是arr2(j, 1) = arr1(i, 1)'提示下标越界,不知道问题出在哪里,求大神帮忙,多谢多谢

附件列表

数据.xlsx

大小:133.17 KB

 马上下载

这是案例数据,谢谢

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-3-3 10:16:47
提示下表越界后,点击调试,鼠标移动到出错的那行的j变量上,看看此时j变量值是多少。
这个错误应该是j超过了你定义的数组上限了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-3 10:25:47
caihaiyu 发表于 2016-3-3 10:16
提示下表越界后,点击调试,鼠标移动到出错的那行的j变量上,看看此时j变量值是多少。
这个错误应该是j超过 ...
j最开始默认的是0,我单个检查也没有越界,可弄到一起就不行了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-3 14:45:54
j的数据类型是integer,最大值是32767,你的数据量是不是过大了?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-4 10:37:30
caihaiyu 发表于 2016-3-3 14:45
j的数据类型是integer,最大值是32767,你的数据量是不是过大了?
数据只有八千多行的,好像没有超,例子里面也三千多行。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-4 11:37:25
你把Excel发到我邮箱,我看看。下载还要1个论坛币,太浪费。haiyucai@126.com
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群