精华内容
下载资源
问答
  • 乍一看,这个题目是有些矛盾的,既然是随机数 ,怎么又是固定的呢? 实际上,是很多使用Excel 的朋友有这样的需求,希望能产生一些随机数,大家知道可以用Rand函数来产生它,但是这个函数是易失...见附件 核心代码如...

    乍一看,这个题目是有些矛盾的,既然是随机数 ,怎么又是固定的呢?

    实际上,是很多使用Excel 的朋友有这样的需求,希望能产生一些随机数,大家知道可以用Rand函数来产生它,但是这个函数是易失的,就是说会不断地计算。朋友们可能希望第一次让它随机产生,而后就固定了。所以,这就姑且称为"固定的随机数"吧

    但是,如果直接用Rand函数,就没法避免这个问题,所以我给出这样的一个解决方案。见附件

    核心代码如下

    Private Function GenerateRandNumbers(strPreString As String, intLBound As Integer, _
                                         intUBound As Integer, rngTarget As Range) As Boolean
    '******************************************************************************************
    '作用:根据用户设置的几个参数自动产生一系列的随机数,并填充到工作表的指定位置
    '作者:陈希章
    '参数:
    '           strPreString:这个作为最后产生的字符串的前缀
    '           intLBound:这个是随机数的最小可能值
    '           intUBound:这个是随机数的最大可能值
    '           rngTarget:你可以选择一个目的位置,存放这些随机数
    '适用Excel 97或者更高的版本
    '******************************************************************************************
        On Error GoTo Errhandler
        Dim rng As Range
        For Each rng In rngTarget
            rng.Value = CStr(strPreString & format(Int((intUBound - intLBound) * Rnd() + intLBound), String(Len(CStr(intUBound)), "0")))
        Next
        GenerateRandNumbers = True
        Exit Function

    Errhandler:
        GenerateRandNumbers = False
        MsgBox Err.Description, vbCritical, "错误"
        Err.Clear
        Exit Function

    End Function

    转载于:https://www.cnblogs.com/chenxizhang/archive/2008/08/17/1269673.html

    展开全文
  • 今天,试着用VBA来实现以下冒泡排序。程序特点:1. 随机生成数字和日期2. 实现对日期的排序3. 添加了程序参数,方便控制排序类型(可以关闭不需要的排序操作)4. 体验了Option Explicit (强制显式声明变量)功能...

    还记得以前考计算机等级考试四级时,用C语言实现过一些很基本的算法,其中就包括冒泡排序法。

    今天,试着用VBA来实现以下冒泡排序。

    程序特点:

    1. 随机生成数字和日期

    2. 实现对日期的排序

    3. 添加了程序参数,方便控制排序类型(可以关闭不需要的排序操作)

    4. 体验了Option Explicit (强制显式声明变量)功能


    运行效果:


    代码:

    Option Explicit
    Sub NestedLoop()
        Dim i, j As Integer '循环控制变量
        Dim t As Integer '随机数排序时的中间变量
        Dim td As Date '随机日期排序时的中间变量
        Dim sd As Date '随机生成日期时的起始日期
        Dim s1 As Boolean '控制是否执行随机数排序
        Dim s2 As Boolean '控制是否执行随机日期排序
    
        '设置程序参数
        s1 = True   'True -> 执行随机数排序
        s2 = True   'True -> 执行随机日期排序
        Const n As Integer = 20 '循环次数
        sd = #11/29/1980#  '起始日期
        
        '设置表头
        With Worksheets("BubbleSort")
            .Cells(1, 1) = "序号"
            .Cells(1, 2) = "随机数(排序前)"
            .Cells(1, 3) = "排序后随机数"
            .Cells(1, 4) = "随机日期(排序前)"
            .Cells(1, 5) = "排序后随机日期"
        End With
        
        
        '数据区
        With Worksheets("BubbleSort")
        For i = 1 To n
            .Cells(i + 1, 1) = i '序号(1,2,...,20)
            .Cells(i + 1, 2) = Int(Rnd * 20) + 1 '随机数(1-20)
            .Cells(i + 1, 4) = DateAdd("d", Int(Rnd() * (Date - sd)) + 1, sd) '随机日期
            'Debug.Print .Cells(i + 1, 4)
        Next
        
        '复制随机数
        For i = 1 To n
            .Cells(i + 1, 3) = .Cells(i + 1, 2)
            .Cells(i + 1, 5) = .Cells(i + 1, 4)
        Next
        
        '冒泡法排序随机数
        If s1 Then
        For i = 2 To n '外循环
            For j = i + 1 To n + 1 '内循环
                If .Cells(i, 3) < .Cells(j, 3) Then
                t = .Cells(i, 3)
                .Cells(i, 3) = .Cells(j, 3)
                .Cells(j, 3) = t
                End If
            Next
        Next
        End If
        
        '冒泡法排序随机日期
        If s2 Then
        For i = 2 To n '外循环
            For j = i + 1 To n + 1 '内循环
                If .Cells(i, 5) < .Cells(j, 5) Then
                td = .Cells(i, 5)
                .Cells(i, 5) = .Cells(j, 5)
                .Cells(j, 5) = td
                End If
            Next
        Next
        End If
        End With
    End Sub

    展开全文
  • 常用的一些vba代码

    2021-03-23 23:37:25
    Sub suijishu() '随机数 Dim shuzu(1 To 50000, 1 To 20) As Variant '定义数组,注意是从1开始的 Dim hang As Long Dim lie As Long Randomize For hang = 1 To 50000 For lie = 1 To 20 shuzu(hang, ...

    数组赋值给单元格区域

    Sub suijishu() '随机数
        Dim shuzu(1 To 50000, 1 To 20) As Variant '定义数组,注意是从1开始的
        
        Dim hang As Long
        Dim lie As Long
        
        Randomize
        For hang = 1 To 50000
            For lie = 1 To 20
                shuzu(hang, lie) = Rnd()
                
            Next lie
        Next hang
        
        '数组赋值给单元格区域
        Sheet1.Range(Cells(1, 1), Cells(50000, 20)) = shuzu
        
    End Sub

    下面的代码是没有优化的代码,功能与上面一样(执行时间非常长)

    Sub suiji2()
        Dim hang As Long
        Dim lie As Long
        Randomize
        For hang = 1 To 50000
            For lie = 1 To 20
                Sheet2.Cells(hang, lie) = Rnd()
                
            Next lie
        Next hang
        
    End Sub

    即便是前后增加关闭显示,效率提升也很有限。

    运行时间

    详细代码如下

    
    Sub suiji3()
        Dim time1 As Single
        Dim time2 As Single
        
        time1 = Timer
        
        
        Dim hang As Long
        Dim lie As Long
        Randomize
        For hang = 1 To 50000
            For lie = 1 To 20
                Sheet2.Cells(hang, lie) = Rnd()
                
            Next lie
        Next hang
        
        
        time2 = Timer
        Dim timecha As Single
        timecha = (time2 - time1)
        
        MsgBox "运行时间" & timecha & "秒"
        
        
    End Sub
    

     

    另外的一段代码

    对内容进行处理之后再赋值到相应的表格

    参考代码如下

    ’参考代码https://blog.csdn.net/iamlaosong/article/details/46878321
    Sub fuzhi() '大数据复制
        Dim shuzu() ' As Variant
        shuzu = Sheets(1).Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(50000, 20)).Value
        'shuzu = Sheet1.Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(50000, 20)).Value  '注意此句无法通过
        
        Dim shuzu2(1 To 50000, 1 To 20) As Variant '定义数组,注意是从1开始的
        Dim hang As Long
        Dim lie As Long
        '此循环内可以添加相应的计算
        For hang = 1 To 50000
            For lie = 1 To 20
                shuzu2(hang, lie) = shuzu(hang, lie)
            Next lie
        Next hang
        
        '数组赋值给单元格区域
        Sheets(3).Range(Cells(1, 1), Cells(50000, 20)) = shuzu2
        
    End Sub
    

    大数据分拣

    
    Sub fuzhi() '大数据复制
    
        
        Const DEF_CGQSL As Long = 14    '定义 传感器数量
        Const DEF_TiaoM As Long = 35000  '定义 处理条目
        
        
        Dim DEF_BiaoGZHS As Long
        DEF_BiaoGZHS = 1 + DEF_CGQSL * DEF_TiaoM
        
        Dim shuzu()  As Variant
        shuzu = Sheets(1).Range(Sheets(1).Cells(2, 1), Sheets(1).Cells(DEF_BiaoGZHS, 26)).Value
        
        Dim i As Long
        Dim hang As Long
        Dim book2hang As Long
        book2hang = 1
        
        Dim Low1 As Long
        Dim Up1 As Long
        Low1 = LBound(shuzu, 1) '1
        Up1 = UBound(shuzu, 1) 'hang
        Dim Low2 As Long
        Dim Up2 As Long
        Low2 = LBound(shuzu, 2) '1
        Up2 = UBound(shuzu, 2) '26
        
    
        Dim shuzu2(1 To DEF_TiaoM + 1, 1 To 26 * DEF_CGQSL) As Variant '定义数组,注意是从1开始的
    '
            Dim cgq As Long
            For cgq = 1 To DEF_CGQSL
                book2hang = 1
                For hang = cgq To DEF_BiaoGZHS Step DEF_CGQSL
                    For i = 1 To 26
                        'If (hang > 149950) Then Debug.Print hang
                        If hang <= DEF_BiaoGZHS And book2hang < DEF_TiaoM Then
                            shuzu2(book2hang, i + (cgq - 1) * 26) = shuzu(hang, i)
                        End If
                    Next i
                    book2hang = book2hang + 1
               Next hang
            Next cgq
    '
        book2hang = 1
        '数组赋值给单元格区域
        Sheets(2).Range(Cells(1, 1), Cells(DEF_TiaoM + 1, 26 * DEF_CGQSL)) = shuzu2
    
    End Sub

     

    anlog  2021年3月24日00点46分

    特此记录

     

     

     

     

     

     

     

    展开全文
  • 一段简单的VBA代码,让你自如操作Excel,成为职场达人!抛砖引玉的场景需求: 平时我们会买些彩票, 彩票开奖时,彩票数据都是随机生成的(傻子才真信!)。 这就涉及到的随机函数应用。 本篇中我们模拟一组数据当做...

    一段简单的VBA代码,让你自如操作Excel,成为职场达人!

    抛砖引玉的场景需求: 平时我们会买些彩票, 彩票开奖时,彩票数据都是随机生成的(傻子才真信!)。 这就涉及到的随机函数应用。 本篇中我们模拟一组数据当做彩票数据。

    场景1: 在活动工作表中生成6组含有7个随机数的数据。

    00248b114e9fdbb329e391c599f7ddc6.gif

    标准模块中加入如下代码即可实现上面的演示功能。

    注意下面代码只是凸显演示重要功能, 工作表中的颜色,文字大小等格式是手动设置的。

    Option Base 1Sub 随机生成幸运数字()Dim n As Integer, x As Integer, y As IntegerDim arr() As Integer'需要产生幸运号码的数量n = 6: m = 7'重新定义数据容量ReDim arr(n, m) As Integer'向数组中随意填充随机数For x = 1 To n For y = 1 To m Randomize arr(x, y) = Int(10 * Rnd) '将数组数据加载进单元格区域中 Cells(x + 1, y + 1) = arr(x, y) NextNextEnd Sub

    我们还可以将上面代码做成通用程序, 这样可随心所欲的生成自定义组彩票数据!

    如下面代码生成10组含有5个随机数字的彩票数据

    149a9212568332b9437e3142e7963746.gif
    Sub 调用程序()Call 生成随机数(10, 5)End SubSub 生成随机数(n As Integer, m As Integer)Dim x As Integer, y As IntegerDim arr() As Integer'重新定义数据容量ReDim arr(n, m) As Integer'向数组中随意填充随机数For x = 1 To n For y = 1 To m Randomize arr(x, y) = Int(10 * Rnd) '将数组数据加载进单元格区域中 Cells(x, y) = arr(x, y) NextNextEnd Sub

    动手试一试,屏幕前的你, 复制代码运行下吧~~!

    有关Excel VBA编程知识(职场牛人必备秘技),可下载安装使用一款优秀职场人必备的工具《神奇的VBA》插件,一款嵌入进Excel Ribbon界面,打开任意Excel工作簿就能随时查阅学习VBA编程的Excel 插件。

    插件下载地址戳下面链接:

    《神奇的VBA》-职场牛人都在使用的Excel插件

    089586749cc939d98b3169c9f4db545b.png

    《神奇的VBA》选项卡样式

    efe74bebc9f5c3ac6ae07d35f8bc446d.gif

    神奇的VBA使用演示图

    展开全文
  • 如何取随机数

    2019-10-17 12:05:39
    在工作时遇到Excel里用到随机数,发现在VBA中,如果使用Rnd取随机数,实际上取到只是1~65535分之一,...下面是我工作里使用的一段VBA代码,使用了系统时间做随机种子 Private Sub CommandButton1_Click() rName = ...
  • 学习Excel技术,关注微信公众号:...还可以使用VBA代码。其实,还可以使用Excel的模拟运算表功能。Excel的计算选项如图1所示,通常情况下设置为自动计算,这样当工作表中的单元格发生变化或者保存工作表时,公式会自...
  • 学习Excel技术,关注微信公众号:...还可以使用VBA代码。其实,还可以使用Excel的模拟运算表功能。Excel的计算选项如图1所示,通常情况下设置为自动计算,这样当工作表中的单元格发生变化或者保存工作表时,公式会自...
  • 三个vba生成不重复随机整数的案例

    千次阅读 2016-08-15 17:52:20
    内容提要:文章提供三个vba代码生成不重复随机数的案例供学习。对Excel感兴趣的朋友可加Excel学习交流群:284029260(www.itblw.com) vba不重复随机数案例一: 下面的代码,将在A1:A5000单元格产生1-5000的不...
  • 一段简单的VBA代码,让你自如操作Excel,成为职场达人!抛砖引玉的场景需求:平时我们会买些彩票,彩票开奖时,彩票数据都是随机生成的(不知道是不是有人真信了)。这就涉及到的随机函数应用。本篇中我们模拟一组数据...
  • Function 随机试题() '产生随机数代码,40个随机数字从1~100中取'1、声明变量Dim dx As Integer '随机单选题数值Dim dxjh As New Collection '随机单选题数值集合,不重复Dim dxzsl As Integer '单选题库总数量Dim ...
  • 高频词用标签云表现出来还是很漂亮的,在网上下载的刘万祥老师的标签云...VBA代码: Sub SetTagSize() Application.CalculateFull '刷新随机数,正式不需要 Dim str As String Dim l As Long str = "" For i
  • IT文档 7

    2009-03-23 09:12:00
    “打开”对话框同时选择多个文件“扫雷”游戏的幕后一个利用随机数加密字串的算法一个图片数据的存和取的示例一个很COOL的对话框弹出效果一个新奇和笨拙的VB屏保一个旋转的3D箱子(动画)一个用VBA编写的Melissa病毒一...
  • VBSCRIPT中文手册

    热门讨论 2010-11-12 10:13:06
    未包含在 VBA 中的 VBScript 特性 未包含在 Visual Basic 中的 VBScript 特性列表:应用程序编辑。 Microsoft Scripting 运行时特性 VBScript 中最新的 Scripting 运行时特性列表。 语言元素 说明 Abs 函数 ...
  • vb Script参考文档

    2009-07-28 22:13:02
    未包含在 VBA 中的 VBScript 特性 未包含在 Visual Basic 中的 VBScript 特性列表:应用程序编辑。 Microsoft Scripting 运行时特性 VBScript 中最新的 Scripting 运行时特性列表。 语言元素 说明 Abs 函数 ...
  • VBSCRIP5 -ASP用法详解

    2010-09-23 17:15:46
    未包含在 VBA 中的 VBScript 特性 未包含在 Visual Basic 中的 VBScript 特性列表:应用程序编辑。 Microsoft Scripting 运行时特性 VBScript 中最新的 Scripting 运行时特性列表。 语言元素 说明 Abs 函数 ...
  • │ │ 技巧189 解读时间格式代码.xls │ │ 技巧190 将角度显示为度分秒以及相关转换计算.xls │ │ │ ├─第19章-数学与三角计算 │ │ 技巧191 常用数值舍入计算.xls │ │ 技巧192 按人民币面额估算备钞数...
  • VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 隐藏与显示磁盘本地磁盘盘符(无需重启动)。 【端口进程查询】 查看本机开放的系统端口以及使用该...
  • Kofler还是Definitive Guide to Excel VBA第2版的作者。 目录 封面 -23 封底 -22 扉页 -21 版权 -20 版权声明 -19 译者序 -18 前言 -16 目录 -11 第一部分 入门 1 第1章 什么是MySQL 2 1.1 什么是数据库 2 1.1.1...
  • VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 隐藏与显示磁盘本地磁盘盘符(无需重启动)。 【端口进程查询】 查看本机开放的系统端口以及使用该...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 隐藏与显示磁盘本地磁盘盘符(无需重启动)。 【端口进程查询】 查看本机开放的系统端口以及使用该...
  • VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 隐藏与显示磁盘本地磁盘盘符(无需重启动)。 【端口进程查询】 查看本机开放的系统端口以及使用该...
  • EXCEL集成工具箱V9.0 多国语言最终原版(2003-2010通用)! * 软件大小: 23.90MB ...【VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 ...

空空如也

空空如也

1 2
收藏数 23
精华内容 9
关键字:

vba随机数代码