设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

12下一页
返回列表 发新帖
查看: 622|回复: 13

[VBA编程/宏] 怎样满足两个条件去循环

[复制链接]

点击这里给我发消息

发表于 2017-4-1 17:36:49 | 显示全部楼层 |阅读模式
我要控制AD18 AD21两个单元格的合格率,然后去随机数,
单单控制一个单元格的VB会写了,现在两个单元格都要控制的话,VB里面不会了
请教下 谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2017-4-1 21:36:46 | 显示全部楼层
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是

  1. range("ad18")= "=COUNTIFS(O18:Z19,"<30")/24"
  2. range("ad18")= range("ad18")
复制代码

要按vba的写法就是

  1. dim myrng as range
  2. dim i as long
  3. for each myrng in range("o18:z19")
  4. if myrng < 30 then
  5.   i = i +1
  6. end if
  7. next
  8. range("ad18") = i /24
复制代码

点击这里给我发消息

 楼主| 发表于 2017-4-1 21:39:29 来自手机 | 显示全部楼层
我正在是要控制两个单元格的合格率,方便提供下QQ吗
来自: 微社区

点击这里给我发消息

 楼主| 发表于 2017-4-1 21:50:58 来自手机 | 显示全部楼层
我是要控制两个单元格的合格率,第一个是要控制他们20组数据在-30到30之间!第二个是要控制在0到20之间。合格率可以是都大于90%。
来自: 微社区
发表于 2017-4-1 22:48:36 | 显示全部楼层
bingbaicai 发表于 2017-4-1 21:50
我是要控制两个单元格的合格率,第一个是要控制他们20组数据在-30到30之间!第二个是要控制在0到20之间。合 ...

试下内置函数RANDBETWEEN
=RANDBETWEEN(-30,30)

点击这里给我发消息

 楼主| 发表于 2017-4-2 06:58:11 | 显示全部楼层
roych 发表于 2017-4-1 22:48
试下内置函数RANDBETWEEN
=RANDBETWEEN(-30,30)

你这个不是,这个太简单了

点击这里给我发消息

 楼主| 发表于 2017-4-2 06:59:04 | 显示全部楼层
pureshadow 发表于 2017-4-1 21:36
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是
要按vba的写法就是

我上面有附件

点击这里给我发消息

 楼主| 发表于 2017-4-2 07:40:54 | 显示全部楼层
pureshadow 发表于 2017-4-1 21:36
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是
要按vba的写法就是

你这个应该只是达到了随机,我要控制O18:Z19这单元格的数据合格率,好比是90%,让他去随机数

    Private Sub CommandButton1_Click()
    For i = Range("AG6") To Range("AG7")
    Range("AG5") = i
    Do
        [L11:Z11] = 0
            For Each cel In [L11:Z11]
               cel.Value = Int(Rnd() * 60 - 20)
               If [AD11] < 0.87 Then GoTo a
            Next
a:
        Loop While [AD11] < 0.87
   
   
    ActiveSheet.PageSetup.PrintArea = "A1:AD20"
    ActiveSheet.PrintOut
    Next
   
    End Sub
这是只控制一个,我现在想控制两个区域的

点击这里给我发消息

 楼主| 发表于 2017-4-2 07:43:33 | 显示全部楼层
pureshadow 发表于 2017-4-1 21:36
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是
要按vba的写法就是


    Private Sub CommandButton1_Click()
    For i = Range("AG6") To Range("AG7")
    Range("AG5") = i
    Do
        [O18:Z19] = 0 And [O21:Z22] = 0
            For Each cel In [O18:Z19]
               cel.Value = Int(Rnd() * 30)
               If [AD20] < 0.87 Then GoTo a
            Next
a:
        Loop While [AD20] < 0.87
        Next
         For Each cel In [O21:Z22]
               cel.Value = Int(Rnd() * 30)
               If [AD20] < 0.87 Then GoTo a
            Next
a:
        Loop While [AD20] < 0.87
        
   
   
    ActiveSheet.PageSetup.PrintArea = "A1:AE30"
    ActiveSheet.PrintOut
    Next
   
    End Sub
这样不对啊

点击这里给我发消息

 楼主| 发表于 2017-4-2 09:20:55 | 显示全部楼层
来人呀
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /6 下一条

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2019-6-27 17:13 , Processed in 0.125429 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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