Excel精英培训网

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

[已解决]宏代码:任意选取单元格内的数据

[复制链接]
发表于 2014-6-22 22:52 | 显示全部楼层 |阅读模式
本帖最后由 lijian8003 于 2014-6-22 23:05 编辑

有210行、100列的数据,欲每行任意选取10个单元格内的数据,组合成210行、10列数据,这样的宏代码如何写?
最佳答案
2014-6-23 09:12
  1. Sub tt()
  2.     arr = Sheet1.[a1].Resize(210, 100)
  3.     Dim brr(1 To 210, 1 To 10)
  4.     Randomize
  5.     For i = 1 To 210
  6.         p = 100       '随机数的取值范围
  7.         For j = 1 To 10
  8.             q = Int(p * Rnd) + 1   '取随机数
  9.             brr(i, j) = arr(i, q)
  10.             arr(i, q) = arr(i, p)   '取掉后把最后一个数替换掉当前数
  11.             p = p - 1   '取值范围-1(不再取最后一个数)
  12.         Next
  13.     Next
  14.     Sheet2.[a1].Resize(210, 10) = brr
  15. End Sub
复制代码
发表于 2014-6-23 09:12 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.     arr = Sheet1.[a1].Resize(210, 100)
  3.     Dim brr(1 To 210, 1 To 10)
  4.     Randomize
  5.     For i = 1 To 210
  6.         p = 100       '随机数的取值范围
  7.         For j = 1 To 10
  8.             q = Int(p * Rnd) + 1   '取随机数
  9.             brr(i, j) = arr(i, q)
  10.             arr(i, q) = arr(i, p)   '取掉后把最后一个数替换掉当前数
  11.             p = p - 1   '取值范围-1(不再取最后一个数)
  12.         Next
  13.     Next
  14.     Sheet2.[a1].Resize(210, 10) = brr
  15. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
lijian8003 + 3 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-6-23 09:14 | 显示全部楼层
请看附件。

工作簿1.rar

43.54 KB, 下载次数: 8

回复

使用道具 举报

发表于 2014-6-24 00:32 | 显示全部楼层
grf1973 发表于 2014-6-23 09:12

好像没有考虑q取到重复值的情况
回复

使用道具 举报

发表于 2014-6-24 09:41 | 显示全部楼层
cbg2008 发表于 2014-6-24 00:32
好像没有考虑q取到重复值的情况

仔细研究下代码,就会发现即使q取到了重复值,但数组q位置对应的值已经是数组最后一个值了。。。。。
回复

使用道具 举报

发表于 2014-6-24 09:43 | 显示全部楼层
就是说q取到重复值并不意味着数组会取到重复值。。。。。
回复

使用道具 举报

发表于 2014-6-24 09:59 | 显示全部楼层
学习
回复

使用道具 举报

发表于 2014-6-24 10:27 | 显示全部楼层
grf1973 发表于 2014-6-24 09:43
就是说q取到重复值并不意味着数组会取到重复值。。。。。

哦,我没仔细看,你说得对
回复

使用道具 举报

 楼主| 发表于 2014-6-24 19:29 | 显示全部楼层
grf1973 发表于 2014-6-23 09:12

感谢您的关注!
您的代码测试过,有些疑问:
任取10个单元格的数据,单元格内数据是00到99(并非00、01、02、03...99分别1个,而是有可能重复,如87、87、87、21、02、02...),为何取出100的数值?
回复

使用道具 举报

发表于 2014-6-25 08:43 | 显示全部楼层
测试文件单元格内数据是1--100。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:32 , Processed in 0.599180 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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