注意,在excel中应用公式时,单元格格式应设为常规。
excel根据行号轮流选取不同的填充值
=IF(MOD(ROW()-1,3)=0,"值1",IF(MOD(ROW()-1,3)=1,"值2","值3"))
按概率选取填充值
自动在excel中列填充数据,要求单元格值在男和女之间随机取值,其中取男的概率为0.9,取女的概率为0.1:
=IF(RAND()<=0.9, "男", "女")
如果概率扩展到3类:
=IF(RAND()<=0.8, "男", IF(RAND()<=0.1, "女", "未知"))
随机生成18位数字(伪身份证号)
=TEXT(RANDBETWEEN(10^17,10^18-1),"000000000000000000")
这是因为在Excel中,整数的精度是有限的。当一个整数超过了一定的数量级之后,其精度就会变得不够准确,这就导致了一些奇怪的现象,例如生成的数最后三位总为0。
在这个公式中,我们使用了RANDBETWEEN函数来生成一个介于10的17次方和10的18次方减1之间的整数。这个整数的最大值是10的18次方减1,也就是999999999999999999,总共有18位数字。然而,Excel中的整数最多只能精确表示15位数字,超过这个范围的数字就会丢失精度。因此,当我们使用TEXT函数将这个整数转换为文本字符串时,最后三位数字就会被自动补0,因为Excel已经无法精确表示它们。
如果你需要生成18位数字且不带末尾0的随机数,可以在不同列各生成2个9位的随机数,转换成文本后,使用&公式进行拼接。
生成2到3字的随机人名
Excel本身没有内置生成中文人名的函数,但可以通过一些技巧实现该功能。以下是一种可能的方法:
在Excel中创建一个包含所有可能姓氏的列表,例如在A列中输入所有的姓氏(如张、王、李、刘等)。
在B列中输入以下公式,用于随机选择一个姓氏:
=INDEX(A:A, RANDBETWEEN(1, COUNTA(A:A)))
该公式会通过RANDBETWEEN函数生成一个1到姓氏总数之间的随机整数,然后通过INDEX函数返回对应的姓氏。
- 在C列中输入以下公式,用于生成一个随机的名字:
=LEFT(INDEX($F$1:$F$710, RANDBETWEEN(1, 710)), RANDBETWEEN(2, 3))
该公式会从一个预设的中文名字列表中随机选择一个名字,并随机确定该名字的长度为2或3个汉字。
其中,预设的中文名字列表可以通过网上查找或自行收集。在该公式中,我们将名字列表存储在F1:F710单元格中,你需要将这个范围修改为适合你自己的范围。
- 将B列和C列合并,得到最终的随机中文人名,例如:
= B1 & C1
将该公式输入到D列中即可得到2到3字的随机中文人名。