ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6030|回复: 52

[求助] 香川随机乱序在会计上的广泛应用!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-3-13 20:16 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 张雄友 于 2015-3-15 15:15 编辑

所选区域是:A1:G12,但怎么令这些非空值在相互间跑动(就是黄色区域跑动),怎么做到忽略空值?令它不在空白(红色区域跑动)?

实际工作中,假设有 N 笔钱,其中有数笔钱是不能动的,只能动用其中几笔钱,就是附件这个意思。


忽略空值乱序.rar

8.21 KB, 下载次数: 33

TA的精华主题

TA的得分主题

发表于 2015-3-13 20:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub kagawa_Rnd多列乱序() '香川随机乱序数组洗牌法!
  2. On Error Resume Next
  3.   Randomize
  4.   arr = Selection ': rw = UBound(arr): cl = UBound(arr, 2)
  5.   rw = Cells(1, 256).End(xlToLeft).Column
  6.   cl = Cells(65536, rw).End(3).Row
  7.   For i = 1 To rw
  8.     For j = 1 To cl
  9.         If Len(arr(i, j)) And IsArray(arr) Then '不发挥作用!
  10.         r = Int(Rnd() * ((rw - i + 1) * cl - j + 1)) + (i - 1) * cl + j - 1
  11.         'i1 = Int(r / cl) + 1: j1 = r Mod cl + 1
  12.         i1 = r Mod cl + 1: j1 = r Mod rw + 1
  13.         t = arr(i1, j1): arr(i1, j1) = arr(i, j): arr(i, j) = t
  14.           End If '不发挥作用!
  15.     Next
  16.   Next
  17.   Selection = arr
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-13 20:54 | 显示全部楼层
请测试附件     

忽略空值乱序-修改.rar

9.7 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 20:59 | 显示全部楼层
jpj123 发表于 2015-3-13 20:54
请测试附件

谢谢,但是这样是不行的,左下角的数据从未跑动过。

TA的精华主题

TA的得分主题

发表于 2015-3-13 21:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
张雄友 发表于 2015-3-13 21:39
附件已经很现实了,就是对选中区域,对局部单元格实施限制性避免入侵。说得明白一点就是:有一群坏人,哪些 ...
  1. Sub kagawa_Rnd多列乱序() '香川随机乱序数组洗牌法!
  2. On Error Resume Next
  3.   Randomize
  4.   arr = Selection: rw = UBound(arr) - 2: cl = UBound(arr, 2) - 2
  5.   For i = 1 To rw
  6.     For j = 1 To cl
  7.         If Len(arr(i, j)) And IsArray(arr) Then '不发挥作用!
  8.         r = Int(Rnd() * ((rw - i + 1) * cl - j + 1)) + (i - 1) * cl + j - 1
  9.         i1 = Int(r / cl) + 1: j1 = r Mod cl + 1
  10.         t = arr(i1, j1): arr(i1, j1) = arr(i, j): arr(i, j) = t
  11.           End If '不发挥作用!
  12.     Next
  13.   Next
  14.   Selection = arr
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-13 21:14 | 显示全部楼层
张雄友 发表于 2015-3-13 20:59
谢谢,但是这样是不行的,左下角的数据从未跑动过。
  1. Sub kagawa_Rnd多列乱序() '香川随机乱序数组洗牌法!
  2. On Error Resume Next
  3.   Randomize
  4.   arr = Selection ': rw = UBound(arr): cl = UBound(arr, 2)
  5.   cl = Cells(1, 256).End(xlToLeft).Column
  6.   rw = Cells(65536, cl).End(3).Row
  7.   For i = 1 To rw
  8.     For j = 1 To cl
  9.         If Len(arr(i, j)) And IsArray(arr) Then '不发挥作用!
  10.         r = Int(Rnd() * 10000)
  11.         'i1 = Int(r / cl) + 1: j1 = r Mod cl + 1
  12.         i1 = r Mod rw + 1: j1 = r Mod cl + 1
  13.         t = arr(i1, j1): arr(i1, j1) = arr(i, j): arr(i, j) = t
  14.           End If '不发挥作用!
  15.     Next
  16.   Next
  17.   Selection = arr
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-13 21:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-3-13 21:14 | 显示全部楼层
请再测试下附件  

忽略空值乱序-修改.rar

9.77 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 21:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
maditate 发表于 2015-3-13 21:14
楼主的意思是不是黄色区域的数据随机打乱?

是的,但是不能跑到红色区域去乱(而又要选中红色区域)。

TA的精华主题

TA的得分主题

发表于 2015-3-13 21:21 | 显示全部楼层
张雄友 发表于 2015-3-13 21:17
是的,但是不能跑到红色区域去乱(而又要选中红色区域)。

选中干吗?你只要把数据打乱不就得了。在实际工作中选中这条语句是极少用到的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-12 15:59 , Processed in 0.036744 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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