Excel精英培训网

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

VBA怎么随机选择一行,并复制到剪贴板呢?

[复制链接]
发表于 2019-8-19 18:08 | 显示全部楼层 |阅读模式
微信图片_20190819180111.png

如图,选择其中一行,并复制。到鼠标剪贴板
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-8-20 08:28 | 显示全部楼层
假设行数是 i ,复制行的代码:
rows(i).copy
会把 i 行 复制到了剪贴板,后续可以用ctrl+v粘贴到任意行

如果是想把 i 行复制到指定行,比如 20 行,必须是从a20开始,因为是整行复制,所有的列都不能省略:
rows(i).copy range("a20")
回复

使用道具 举报

 楼主| 发表于 2019-8-20 08:57 | 显示全部楼层
hfwufanhf2006 发表于 2019-8-20 08:28
假设行数是 i ,复制行的代码:
rows(i).copy
会把 i 行 复制到了剪贴板,后续可以用ctrl+v粘贴到任意行
...

有没办法,随机选择一行的呢?


回复

使用道具 举报

发表于 2019-8-20 09:24 | 显示全部楼层
aaronpang1 发表于 2019-8-20 08:57
有没办法,随机选择一行的呢?

用随机函数rnd就能得到一个大于零小于1的随机数,因为是随机小数,要变成可用的整数,需要用一定的算法转换:
常用的使用int,比如得到1-10之间的随机数
   int(10*rnd)+1
要得到可用行的随机行数,可以用上面类似的方法:
   int([a100000].end(3).row*rnd)+1
   其中:[a100000].end(3).row是a列最大的有效数据行数,如果数据在b列,把[a100000]改成[b100000]。字母后面的数字100000并非一定是这个数,只需要这个数大于你实际的数据行即可,比如数据的最大行是20000行,那么[a25000]就可以了,数字小于实际的数据行则不行;
回复

使用道具 举报

发表于 2019-8-20 09:45 | 显示全部楼层
Sub nn()
r1 = 2   '数据开始行,即标题行+1
r2 = Range("a65536").End(xlUp).Row  '数据结束行
i = Int(r2 * Rnd) + r1
Rows(i).Copy
End Sub
回复

使用道具 举报

 楼主| 发表于 2019-8-20 10:29 | 显示全部楼层
微信图片_20190820101749.png 微信图片_20190820101932.png

可以随机选择一行了

可表格是先分类,然后再随机选择的。

有没办法,移动方向键盘上下,然后选择,正在显示的一行的呢?(图一是我的设想,不知有没更好的办法)




回复

使用道具 举报

发表于 2019-8-20 13:30 | 显示全部楼层
  1. Sub nn()
  2. r1 = 2   '数据开始行,即标题行+1
  3. r2 = Range("a65536").End(xlUp).Row  '数据结束行
  4. do
  5.     i = Int(r2 * Rnd) + r1
  6. loop until rows(i).hidden=false
  7. Rows(i).Copy
  8. End Sub
复制代码

评分

参与人数 1学分 +2 收起 理由
lsyylw + 2 太强大了

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 08:07 , Processed in 0.294215 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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