学习Excel没有练习素材?一文带你搞定!
Cover
对于学习Excel的朋友而言,练习素材是个难点,本文着眼于解决这个问题,今天先练习生成随机姓名。
本文介绍了两种方法,对应不同的Excel版本。如下图,在F2单元格输入数量,G列生成对应数量的姓名。
问题描述
一、准备工作
要制作随机生成任意数量的姓名,需要先在搜索引擎上搜集百家姓和汉语常用字,按照如下排列。
准备工作
常规情况下,我们的姓名有2个字的,也有3个、4个字的,在第2列的汉字中间,要插入适量的空格,这样就既能生成2个字的姓名,也能生成3个字、4个字的姓名(复姓姓名四个字)。
二、步骤分解(新版本Excel)
1、我这里准备的源有4024行,借助RANDBETWEEN函数,生成1到4024的随机数,在三列汉字中取数,按列执行计算,使用BYCOL函数。
=BYCOL( $B$2:$D$4025, LAMBDA( x, INDEX(x,RANDBETWEEN(1,4024)) ))2、这样得出的是一个1行3列的数组,外层嵌套CONCAT函数,转换为单个字符串。
=CONCAT(BYCOL($B$2:$D$4025,LAMBDA(x,INDEX(x,RANDBETWEEN(1,4024)))))3、为了让以上计算,执行到4024行,外层再嵌套MAP函数。
=MAP( $A$2:$A$4025, LAMBDA( m, CONCAT(BYCOL($B$2:$D$4025,LAMBDA(x,INDEX(x,RANDBETWEEN(1,4024))))) ))这里MAP函数的作用是控制计算的次数,其遍历的对象并不参与到实际的计算中。这一步的结果,返回4024条随机姓名,再嵌套UNIQUE函数去重。
=UNIQUE( MAP($A$2:$A$4025,LAMBDA(m,CONCAT(BYCOL($B$2:$D$4025,LAMBDA(x,INDEX(x,RANDBETWEEN(1,4024))))))))4、去重之后的随机姓名,外层再嵌套TAKE函数即可。
=TAKE( UNIQUE(MAP($A$2:$A$4025,LAMBDA(m,CONCAT(BYCOL($B$2:$D$4025,LAMBDA(x,INDEX(x,RANDBETWEEN(1,4024)))))))), $F$2)三、老版Excel中的操作
1、如果你的Excel版本比较老,可以将E列用作辅助列,E2单元格输入公式:
=INDEX($B$2:$B$4025,RANDBETWEEN(1,4024))& //生成随机姓氏 INDEX($C$2:$C$4025,RANDBETWEEN(1,4024))& //生成姓名中间的字 INDEX($D$2:$D$4025,RANDBETWEEN(1,4024)) //生成姓名最后的字 然后双击向下填充,就能生成4024条随机姓名。
2、使用OFFSET来取数,高度设置为F2。
=OFFSET($E$2,0,0,$F$2)公式表示:以E2单元格为基准,不作行列偏移(第二、三参数设置为0),向下取数的高度为F2单元格输入的数字。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有