电脑教程
位置:首页>> 电脑教程>> office教程>> 利用excel中vba代码随机生成姓名列表的方法

利用excel中vba代码随机生成姓名列表的方法

  发布时间:2022-12-14 17:13:11 

标签:利用,excel,中,vba,代码,随机,生成,姓名,列表,的

数字可以使用rand、RANDBETWEEN函数来随机生成。可是姓名如何弄呢,本文介绍使用VBA自动随机生成姓名。

具体的随机生成姓名如下介绍:

第一步,新建一个excel工作薄

这个工作薄里面包含两个工作表,分别是“姓名数据”和“生成随机姓名”。

其中的“姓名数据”工作表,有三列数据:百家姓、男子名、女子名,是我们之前已经输入好了的。

利用excel中vba代码随机生成姓名列表的方法

第二步,切换到“生成随机姓名”工作表,单击“生成随机姓名”按钮,excel会出现一个输入框,提示我们输入要生成的人名数。比如我们输入100,单击“确定”,此工作表A列就会随机生成姓名100个。

利用excel中vba代码随机生成姓名列表的方法

下面提供随机生成姓名的VBA代码,使用方法是按下ALT+F11组合键,打开VBE编辑器,插入——模块,复制下面的代码,然后为了操作方便,我们在“生成随机姓名”工作表中插入了一个按钮,将这段代码指定给按钮。

Sub 随机生成姓名()
Dim Arr, Arr2, Arr3, I%, N&, S As Boolean, Str$, Dic, A&, B&
N = Val(InputBox("请输入要生成的人名数:"))     '输入要生成的随机人名数量
If N = 0 Then Exit Sub      '如果未输入或点了取消则退出程序
Set Dic = CreateObject("scripting.dictionary")  '创建字典项目,用于清除生成的重复的人名
With Sheet1     '从sheet1中读取数据并随机生成姓名
    Arr = .Range(.[a2], .Cells(.Rows.Count, 1).End(3))  '读取百家姓放入数组
    Arr2 = .Range(.[b2], .Cells(.Rows.Count, 2).End(3))    '读取男子名常用字放入数组
    Arr3 = .Range(.[c2], .Cells(.Rows.Count, 3).End(3))     '读取女子名常用字放入数组
    Do  '循环执行
        Str = ""       '先清空用于存储生成的名字的变量
        S = Rnd > 0.5   '用取得的随机数来判断生成男子名还是女子名
        I = 2 + IIf(Rnd > 0.8, 0, 1)    '用随机数确定生成的名字的字符数(80%的几率为三个字)
        If S Then   '如果是男子名,则
            A = Int(Rnd * (UBound(Arr) - 2)) + 2    '取得姓对应的数组下标
            B = Int(Rnd * (UBound(Arr2) - 2)) + 2   '取得名字的对应下数组下标
            Str = Arr(A, 1) & Arr2(B, 1)    '串接名字
            If I > 2 Then   '如果名字的字符数大于2,则再得一次名字的字符下标并串接给字符串变量
                B = Int(Rnd * (UBound(Arr2) - 2)) + 2
                Str = Str & Arr2(B, 1)
            End If
        Else    '如果是女子名,则取对应的女子名数组内容,处理方式同上
            A = Int(Rnd * (UBound(Arr) - 2)) + 2
            B = Int(Rnd * (UBound(Arr3) - 2)) + 2
            Str = Arr(A, 1) & Arr3(B, 1)
            If I > 2 Then
                B = Int(Rnd * (UBound(Arr3) - 2)) + 2
                Str = Str & Arr3(B, 1)
            End If
        End If
        Dic(Str) = ""   '将随机姓名放入字典中
    Loop Until Dic.Count = N    '如果字典项目数量达到输入的数值则跳出循环
End With
With Sheet2     '将结果写入sheet2中
    .Cells.Clear    '清空原有内容
    If Dic.Count > 65536 Then   '防止数量太多时无法转置及数据超出单元格最大行号的情况
        Arr = Dic.keys
        For N = LBound(Arr) To UBound(Arr)
            Cells((N Mod 65536) + 1, N  65536 + 1) = Arr(N)
        Next N
    Else    '数量少时直接转置
        .[a1].Resize(Dic.Count, 1) = Application.Transpose(Dic.keys)    '转置字典的keys值
    End If
End With
Set Dic = Nothing   '清空字典项目
End Sub

利用excel中vba代码随机生成姓名列表的方法的下载地址:


     

0
投稿

猜你喜欢

  • 在上面,小编告诉大家为了让某个段落内容更加的突出,为段落内容设置边框格式,而在操作的过程中,会发现另一个方法,就是底纹的设置。下面小编就来教
  • Excel中经常需要竖向求和,在众多数据间进行竖向求和具体该如何操作呢?下面是由小编分享的excel表格竖向求和的方法,以供大家阅读和学习。
  •  这个戏法变得怎么样!公式解析:=TEXT(A2,"[DBNUM2]")DBNUM2是针对于数字的特定代码,需
  • 本节主要是介绍在EXCEL中如何创建图表,以简化图片与文字。感兴趣的朋友可以看一下我们在对一些数据进行处理通常都是使用excel表格来进行计
  • PDF格式良好的视觉阅读性和通用性使得PDF文件的使用越来越广泛了,网络上的PDF资料也越来越多,但是我们往往想要提出某些资料里面的部分文字
  • 在使用excel的时候会需要用到设置自定义筛选的技巧,如果不懂得如何使用设置自定义筛选技巧的朋友一起来学习吧,下面是小编带来的关于excel
  • 我们通常用Word来录入、编辑、打印材料,而有时需要将已经编辑、打印好的材料,做成PowerPoint演示文稿,以供演示、讲座使用。如果在P
  • 5E对战平台是一款优秀的CSGO对战平台,不少使用Win10系统的小伙伴都会使用5E对战平台来进行游戏,但也有不少小伙伴说自己Win10的电
  • 一般的笔记本电脑都会配置一块触摸板提供给用户使用。触摸板在没有鼠标的适合使用很方便,但是如果有鼠标了,再使用电脑就又可以会误触到触摸板,造成
  • Excel2010简体繁体怎么转换步骤一、打开“中文简体繁体转换”对话框选中要进行简体转繁体的单元格区域,然后切换到“审阅”选项卡,再单击“
  • Excel中经常需要设置公式进行进行计算数据,公式具体该如何进行设置呢?下面是由小编分享的excel表格设置公式计算的教程,以供大家阅读和学
  • 1、首先,打开Word在工具栏中点击插入,在插入下方选择表格——插入表格。    2、再插入表格界面根据自己的需要进行选
  • 我们在Word文档中,不仅可以处理各种文字资料,我们其实还可以在Word文档中添加图片,表格等内容,丰富文档内容。在Word文档的表格工具中
  • 我们日常在使用电脑上网的过程中,很多用户经常遇到网络问题,而导致网络问题有一部原因都是因为网卡驱动异常而造成的。那么遇到这种情况我们该如何解
  • Excel软件中怎么进行表格窗口的重排操作教学分享。在表格中可以开启多个表格来进行同框编辑,开启窗口之后,有时候为了方便自己的编辑,可以进行
  • Excel中经常需要把数据设置成分级显示,具体该如何设置分级显示呢?具体方法请看本教程,下面是小编带来的关于excel表格设置分级显示的方法
  • Excel中经常需要为数据进行相除的一个操作,表格数据具体该如何在表格内进行相除呢?下面是小编带来的关于excel表格内数据相除的教程,希望
  • win10 office2013文件打不开怎么办,具体该怎么去进行操作的呢?今天,小编就教大家在Word2013中文件出现Win10打不开的
  • 一、选择工作表中包含数据的矩形单元格区域在很多时候,需要选择工作表中所有包含数据的单元格区域,从而能一次性为所选单元格区域设置统一的格式,这
  • 1、对整个文本进行排版处理;2、先将第一个一级标题选中,再点击工具栏“字体”前“正文”的下拉菜单,选择“标题1”;3、此时会在此行前出现一个
手机版 电脑教程 asp之家 www.aspxhome.com