Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3870|回复: 10

[已解决]随机乱序的问题

[复制链接]
发表于 2015-5-22 17:22 | 显示全部楼层 |阅读模式
本帖最后由 叶芳 于 2015-5-22 18:04 编辑

附件 随机乱序附件.zip (119.16 KB, 下载次数: 6)
发表于 2015-5-22 17:47 | 显示全部楼层    本楼为最佳答案   
随机乱序附件.rar (123.73 KB, 下载次数: 17)

评分

参与人数 1 +1 收起 理由
叶芳 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-5-22 18:30 | 显示全部楼层
zjdh 发表于 2015-5-22 17:47

不能忽略空值的。
回复

使用道具 举报

发表于 2015-5-22 18:36 | 显示全部楼层
zjdh 发表于 2015-5-22 17:47

如何令这些数不走入黄色单元格(空单元)?

随机乱序.rar

16.06 KB, 下载次数: 4

回复

使用道具 举报

发表于 2015-5-22 19:39 | 显示全部楼层
  1. Sub test()
  2.     arr = Range("A1").CurrentRegion
  3.     For i = 1 To UBound(arr, 2)
  4.         For j = 1 To UBound(arr)
  5.             r = Int(Rnd() * UBound(arr) + 1)
  6.             t = arr(j, i)
  7.             If t <> "" And arr(r, i) <> "" Then arr(j, i) = arr(r, i): arr(r, i) = t
  8.         Next
  9.     Next
  10.     Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
  11. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
张雄友 + 9 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-5-22 20:12 | 显示全部楼层
zjdh 发表于 2015-5-22 19:39

代码这样写会不会错误,请指示:

Sub 随机乱序()
    'arr = Range("A1").CurrentRegion
    arr = Selection
    For i = 1 To UBound(arr, 2)
        For j = 1 To UBound(arr)
            r = Int(Rnd() * UBound(arr) + 1)
            t = arr(j, i)
            If t <> "" And arr(r, i) <> "" Then arr(j, i) = arr(r, i): arr(r, i) = t
        Next
    Next
    'Range("A1").Resize(UBound(arr), UBound(arr, 2)) = arr
    Selection(1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub

回复

使用道具 举报

发表于 2015-5-22 20:50 | 显示全部楼层
zjdh 发表于 2015-5-22 19:39

如果是按行乱序,是怎么样的?
回复

使用道具 举报

发表于 2015-5-23 08:48 | 显示全部楼层
张雄友 发表于 2015-5-22 20:12
代码这样写会不会错误,请指示:

Sub 随机乱序()

这不是一样吗?仅仅是取值不同而已!
回复

使用道具 举报

发表于 2015-5-23 08:51 | 显示全部楼层
张雄友 发表于 2015-5-22 20:50
如果是按行乱序,是怎么样的?

把这3句
For i = 1 To UBound(arr, 2)
        For j = 1 To UBound(arr)
            r = Int(Rnd() * UBound(arr) + 1)
改成
For i = 1 To UBound(arr)
        For j = 1 To UBound(arr, 2)
            r = Int(Rnd() * UBound(arr, 2) + 1)

回复

使用道具 举报

发表于 2015-5-23 13:13 | 显示全部楼层
zjdh 发表于 2015-5-23 08:51
把这3句
For i = 1 To UBound(arr, 2)
        For j = 1 To UBound(arr)

下标越界。

随机乱序1.rar

18.85 KB, 下载次数: 3

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-17 05:24 , Processed in 0.304673 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表