Excel精英培训网

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

VBA验算过程

[复制链接]
发表于 2020-6-18 17:03 | 显示全部楼层 |阅读模式
3学分
随机1-1000在A列,当某一个单元格达到900时,下面的数字小于9000就显示为0,大于900就显示本身;当某一个单元格大于等于985时停止,并在第二章表的a1单元格记录该行数,并在b列继续重复该操作,直到循环100次后停止。

最佳答案

查看完整内容

根据第二个附件写的代码 Sub s() Dim arr(1 To 10000, 1 To 50), brr(), x As Long, y As Long, c As Long ReDim brr(1 To 4, 1 To UBound(arr, 2)) '创建配套的数组保存结果 For y = 1 To UBound(arr, 2) For x = 1 To UBound(arr) arr(x, y) = Application.RandBetween(1, 1000) If arr(x, y) < 955 Then Else Exit For '小于跳过 , Next For x = x + 1 To UBound(arr) ...
发表于 2020-6-18 17:03 | 显示全部楼层
死前学好VBA 发表于 2020-6-19 14:53
不知不觉弄出来了,大家可以来讨论一下

根据第二个附件写的代码
Sub s()
Dim arr(1 To 10000, 1 To 50), brr(), x As Long, y As Long, c As Long
ReDim brr(1 To 4, 1 To UBound(arr, 2))  '创建配套的数组保存结果
For y = 1 To UBound(arr, 2)
    For x = 1 To UBound(arr)
        arr(x, y) = Application.RandBetween(1, 1000)
        If arr(x, y) < 955 Then Else Exit For  '小于跳过 ,
    Next

    For x = x + 1 To UBound(arr)
            arr(x, y) = Application.RandBetween(1, 1000)
            Select Case arr(x, y)
            Case Is <= 955                 '也可以1 to 955 这样判断
                 arr(x, y) = 0             '记录0
            Case Is >= 985
                 If y Mod 5 = 1 Then c = y: brr(1, y) = (y \ 5) + 1  '记录序号
                 brr(2, y) = x             '记录行
                 If x > brr(3, c) Then brr(3, c) = x    '记录对应最大值
                 Exit For
            End Select
    Next
Next

Sheets("sheet1").Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr  '随机数据
Sheets("sheet2").Range("a1").Resize(UBound(brr), UBound(brr, 2)) = brr           '存放行列记录
End Sub



回复

使用道具 举报

发表于 2020-6-18 17:54 | 显示全部楼层
达到900是只能等于900还是大于等于900都行,等于900的要不要显示为0,b列操作完是在b列往后90几列查询吗,最好上传数据
回复

使用道具 举报

 楼主| 发表于 2020-6-18 20:49 | 显示全部楼层
0126 发表于 2020-6-18 17:54
达到900是只能等于900还是大于等于900都行,等于900的要不要显示为0,b列操作完是在b列往后90几列查询吗, ...

大佬看一下呢,我尽力去说的明白了

VBA.rar

7.92 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2020-6-19 14:53 | 显示全部楼层
不知不觉弄出来了,大家可以来讨论一下

验算 .rar

31.45 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2020-6-19 19:51 | 显示全部楼层
0126 发表于 2020-6-19 18:28
根据第二个附件写的代码
Sub s()
Dim arr(1 To 10000, 1 To 50), brr(), x As Long, y As Long, c As L ...

膜拜大佬!!!公式明显更简洁,运行速度也快了很多。容我研究研究
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:25 , Processed in 0.381643 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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