利用excel中vba代码随机生成姓名列表的方法
发布时间:2022-12-14 17:13:11
数字可以使用rand、RANDBETWEEN函数来随机生成。可是姓名如何弄呢,本文介绍使用VBA自动随机生成姓名。
具体的随机生成姓名如下介绍:
第一步,新建一个excel工作薄
这个工作薄里面包含两个工作表,分别是“姓名数据”和“生成随机姓名”。
其中的“姓名数据”工作表,有三列数据:百家姓、男子名、女子名,是我们之前已经输入好了的。
第二步,切换到“生成随机姓名”工作表,单击“生成随机姓名”按钮,excel会出现一个输入框,提示我们输入要生成的人名数。比如我们输入100,单击“确定”,此工作表A列就会随机生成姓名100个。
下面提供随机生成姓名的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代码随机生成姓名列表的方法的下载地址:
猜你喜欢
- 在上面,小编告诉大家为了让某个段落内容更加的突出,为段落内容设置边框格式,而在操作的过程中,会发现另一个方法,就是底纹的设置。下面小编就来教
- 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、此时会在此行前出现一个