我们在做教程时,经常用到大量个人基本信息,如果用实名和正确信息,会造成侵犯个人信息权。
为此,笔者经过筛选,用随机函数RAND随机生成姓名、学历、性别、身份证、手机号等信息,避免了侵权的问题。
一、随机生成姓名
中国人的姓名多由2~3位构成(复姓可能为4位),首先,我们要把从网上抄来的2~3位姓名拆分为单字。如下图:
图1
姓:在F2单元格输入函数:=LEFT(E2,1),表示截取姓名中的第一个字。
名1:在G2单元格输入函数:
=IF(LEN(E2)=2,RIGHT(E2,1),MID(E2,2,1))
以上函数用IF函数进行判断,先用LEN()判断计算姓名字数,如果是两个字,则用RIGHT(E2,1)显示最右边的名;如果是3个字,用MID(E2,2,1)从姓名单元格第二位取名当中的第一个字。
名2:在H2单元格输入函数:
=IF(LEN(E2)=2,"",MID(E2,3,1))
以上函数用IF函数进行判断,先用LEN()判断计算姓名字数,如果是两个字,则用""表示空;如果是3个字,用MID(E2,3,1)从姓名单元格第三位取姓名当中的第三个字,也可用RIGHT(E2,1)取最右边的一个字。
用三列辅助列随机取数,分别对应姓氏和两个名,函数很简单,分别在三个单元格输入:=RAND(),然后复制公式到所需行。
图2
随机数和姓名处理清楚后,需要随机生成姓名并合并,操作方法如下图:
图3
在K3单元格输入函数:
=IFERROR(INDEX(F$2:F$471,RANK(A2,A:A)),"")
此处用INDEX RANK函数组合,先用RANK(A2,A:A)计算A2的数值在A列中的排名,然后用INDEX(F$2:F$471,把F$2:F$471中该排名数字所在的行结果进行调用,即可得到随机姓。
IFERROR函数表示查找的内容为错误值时进行屏蔽。
两个随机名的操作方法是一样的,只需要计算B列和C列中随机数的排名行即可。
L列函数:
=IFERROR(INDEX(G$2:G$471,RANK(B2,B:B)),"")
M列函数:
=IFERROR(INDEX(H$2:H$471,RANK(C2,C:C)),"")
在N2单元格输入函数:=K2&L2&M2,把随机生成的姓和名连接起来,由此得到随机生成的姓名组合。
对照图3看就一目了然,每按一次F9就随机生成一次。
二、随机生成学历和性别
图4
如上图,在需要生成学历的第一个单元格输入函数:
=VLOOKUP(INT(RAND()*8) 1,{1,"博士";2,"硕士";3,"本科";4,"大专";5,"高中或中专";6,"初中";7,"小学";8,"文盲或半文盲"},2,)
公式解析:
(RAND()*8) 1表示随机生成1~8之间的数字,用INT取整数,取{1,"博士";2,"硕士";3,"本科"...}中数字对应的值。2表示如果随机数取整后不在1~8范围,则取第二个,也就是VLOOKUP函数中的第二列。
随机生成性别的方法同上,函数为:
=VLOOKUP(INT(RAND()*2) 1,{1,"男";2,"女"},2,)
当然还有其他方法可以随机生成。如:
=CHOOSE(RANDBETWEEN(1,2),"男","女")
三、随机生成身份证号码
图5
这里的出生日期和区域代码要手动输入,可以在网上搜索,区域代码我前几天讲过,这里为了演示,图中数据是随意复制的数据。
在需要生成身份证的单元格输入函数:
=U2&TEXT(T2,"yyyymmdd")&TEXT(RAND()*10^3,"0000")
TEXT(T2,"yyyymmdd")表示将日期转换为如19920215.
TEXT(RAND()*10^3,"0000")表示取RAND()*10^3随机生成的4位数。
四、随机生成手机号
图6
我们先随机生成网段如131 133 135等,再随机生成8位数,然后把网段和随机的8位数连接起来就得到随机手机号码。
网段生成函数:
=CHOOSE(RANDBETWEEN(1,14),131,135,136,137,138,139,151,152,153,157,159,180,181,183)
RANDBETWEEN(1,14)表示随机生成1~14中的随意数,再用CHOOSE嵌套,当函数RANDBETWEEN(1,14)出现1的时候,函数就变为:CHOOSE(131,135,136......),最终结果就是131。
网段生成8位数:
=RANDBETWEEN(10000000,99999999)
表示随机生成10000000到99999999
怎么样,是不是很简单,再也不要担心侵权了!
当然圈内高手如云,我的方法不值得一提,希望高手多多指教。