Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: zglibk

VBA 矩阵式随机数生成——感觉超复杂

[复制链接]
 楼主| 发表于 2020-3-19 14:58 | 显示全部楼层
大灰狼1976 发表于 2020-3-14 10:58
你套错循环了,t循环是和j循环重复的,另外,你有清除数据的过程,我就把原来清除数据的代码删除了,整体如 ...

狼版,    可否再修改一下原代码,即在生成随机数的同时,实时得到每例的均值(这样比起单独遍历每列计算均值会少很多代码——我的笨办法是每列一个sub过程遍历计算。)

    10列对应10个均值文本框,TextBox153~TextBox162,如图所示:
平均值计算.jpg

    考虑到贴子的连续性,因此未开新帖,盼复,谢谢!

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2020-3-19 16:25 | 显示全部楼层
简单的,等下我有时间就写一个,或者会到下班后再写。
回复

使用道具 举报

发表于 2020-3-19 20:54 | 显示全部楼层
  1. Sub 随机数()
  2.     Dim n&, i&, j&, k&, rCnt&, x#, fmt$, gCnt&, b#, NO&, t&, s$
  3.     gCnt = TextBox9
  4.     n = TextBox10
  5.     rCnt = TextBox11
  6.     x = TextBox14
  7.     fmt = "0." & String(TextBox18, "0")
  8.     Call 清空数据
  9.     For j = 1 To n
  10.         Me("TextBox" & j + 18) = Format(CDbl(Me.TextBox16.Text) + CDbl(Me.TextBox17.Text) * Rnd() * (-1) ^ Round(Rnd() * 100, 0), fmt)
  11.         b = Me("TextBox" & j + 18)
  12.         s = b
  13.         For i = 0 To gCnt - 1
  14.             For k = 0 To rCnt - 1
  15.                 NO = i * 30 + k * 10 + j + 18
  16.                 If NO > 28 Then Me("TextBox" & NO) = Format(CDbl(b) + CDbl(x * Rnd()), fmt): s = s & "," & Me("TextBox" & NO)
  17.             Next k
  18.         Next i
  19.         Me("TextBox" & j + 152) = Format(Evaluate("average(" & s & ")"), fmt)
  20.     Next j
  21. End Sub
复制代码

评分

参与人数 1学分 +2 收起 理由
zglibk + 2 学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-3-20 00:13 | 显示全部楼层

谢谢狼版
s = s & "," & Me("TextBox" & NO)

Evaluate("average(" & s & ")") 第一次见这种写法,很神奇啊,学习了

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 16:11 , Processed in 0.442908 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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