谁可以为我解答这个公式 =MId($B$2,ROUND(RAND()*LEN($B$2),0)+1,1)&MId($B$3,
答案:2 悬赏:40 手机版
解决时间 2021-03-07 07:09
- 提问者网友:斑駁影
- 2021-03-06 20:42
=MId($B$2,ROUND(RAND()*LEN($B$2),0)+1,1)&MId($B$3,ROUND(RAND()*LEN($B$3),0)+1,1)&IF(RAND()>0.3,MId($B$3,ROUND(RAND()*LEN($B$3),0)+1,1),"")完成公式是这样的,目的是用来自动化生成姓名,但是在产成的过程中,有单个字的,是否哪里有出错,请高手回答。
最佳答案
- 五星知识达人网友:第幾種人
- 2021-03-06 21:53
公式是在B2单元格中取出姓,在B3单元格中取出名。三段公式是相似的,
MId($B$2,ROUND(RAND()*LEN($B$2),0)+1,1)
就是用RAND生成随机数,与B2长度相乘后,四舍五入,得出一个整数;然后在B2中,以这个整数为起点,取1个汉字(或字符)。
由于RAND()返回的是大于等于0而小于1的小数,当返回0时,在B2的0位取字符,返回空白;同样当RAND函数返回0.99时,返回结果大于B2的长度,结果也是取出回白字符。如果三段函数中有两段同时返回空白,得出的姓名就只有一个字了。
取姓氏这段函数可改为:MId($B$2,INT(RAND()*LEN($B$2))+1,1)
同样,后面的也可以考虑用INT。
=MId($B$2,INT(RAND()*LEN($B$2))+1,1)&MId($B$3,INT(RAND()*LEN($B$3))+1,1)&IF(RAND()>0.3,MId($B$3,INT(RAND()*LEN($B$3))+1,1),"")
MId($B$2,ROUND(RAND()*LEN($B$2),0)+1,1)
就是用RAND生成随机数,与B2长度相乘后,四舍五入,得出一个整数;然后在B2中,以这个整数为起点,取1个汉字(或字符)。
由于RAND()返回的是大于等于0而小于1的小数,当返回0时,在B2的0位取字符,返回空白;同样当RAND函数返回0.99时,返回结果大于B2的长度,结果也是取出回白字符。如果三段函数中有两段同时返回空白,得出的姓名就只有一个字了。
取姓氏这段函数可改为:MId($B$2,INT(RAND()*LEN($B$2))+1,1)
同样,后面的也可以考虑用INT。
=MId($B$2,INT(RAND()*LEN($B$2))+1,1)&MId($B$3,INT(RAND()*LEN($B$3))+1,1)&IF(RAND()>0.3,MId($B$3,INT(RAND()*LEN($B$3))+1,1),"")
全部回答
- 1楼网友:玩家
- 2021-03-06 23:11
$是类型定义符,指字符串,目的是强制让函数以字符串的类型返回运算结果。
远古时代的basic语言的函数一般是以variant型(变体型)作为返回值的类型,加了$就会返回字符串类型。现在的vb语言的内部函数都会严格指定返回值的类型,所以已经不需要用$来强制指定类型了,之所以保留$是为了与老祖宗保持兼容。所以$是可以去掉的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯