weixin_38166612
weixin_38166612
采纳率50%
2017-04-02 13:20 阅读 1.7k
已采纳

VBA如何随机挑选数据表中80%的行数据?

30

各位大神,我是VBA入门级菜鸟,我就是想简单的从913条数据中随机选取其中的80%,并复制到另外一张Sheet里。下面是我自己的代码:
Sub Random60()

Dim RndNumber, n, i, j, k, m, temp(547), Maxrec As Integer

n = Sheet2.Cells(n, "A").Value

Randomize (Timer)
Maxrec = 912

k = 0

Do While k < Maxrec * 0.6

RndNumber = Int((Maxrec * Rnd) + 1)
temp(k) = RndNumber

    For i = 0 To k - 1
    If temp(i) = RndNumber Then Exit For
    Next i
    If i = k Then k = i + 1

Loop

For n = 1 To 912

If n = RndNumber Then
Sheet.Rows(n).CopySheet4.Rows (k + 1)

Next

End Sub

但一直提示我,Next 没有For。可是明明是有的呀...
哪位大神能帮帮我,急。。。。
万谢!!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    songyaowu 韧恒 2017-04-02 13:31

    最后一个For循环改成:
    For n = 1 To 912
    If n = RndNumber Then Sheet.Rows(n).CopySheet4.Rows (k + 1)

    Next

    或者:

    For n = 1 To 912
    If n = RndNumber Then
    Sheet.Rows(n).CopySheet4.Rows (k + 1)
    End If
    Next

    点赞 评论 复制链接分享
  • songyaowu 韧恒 2017-04-02 14:55

    另外,还可以在Then后面加一个下划线来解决

    For n = 1 To 912
            If n = RndNumber Then _
                    Sheet.Rows(n).CopySheet4.Rows (k + 1)
    Next
    
    点赞 评论 复制链接分享

相关推荐