办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 110|回复: 0

zhuanlan.zhihu.com

[复制链接]

3

主题

7

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-2-11 10:15:16 | 显示全部楼层 |阅读模式
在Excel里有两个专门生成随机数的函数:RAND和RANDBETWEEN。今天通过几个示例来和大家分享一下随机数的妙用。
示例1:生成指定年份的随机日期
在Excel中,日期的本质是数值,因此可以使用随机数来生成随机日期。
有三个公式都可以实现这个功能。
公式1:=RANDBETWEEN(DATE($A$2,1,1),DATE($A$2,12,31))



公式1中设置1月1日为随机整数的下限,12月31日作为随机整数的上限,然后利用RANDBETWEEN函数产生随机整数,即可得到2023年的随机日期。

公式2:=DATE($A$2,1,RANDBETWEEN(1,365))



公式2将随机数作为date函数的第三参数,也可以生成指定年份的随机日期。需要注意平年和闰年的差别,平年为365天,闰年为366天。

公式3:=RANDBETWEEN(A$2&-1,(A$2+1&-1)-1)



公式3利用文本合并符&将A2单元格的年份与-1合并,得到字符串“2023-1”,意思是2013年1月1日。同理A2+1&-1得到字符串“2024-1”,再将字符串-1,得到2023年12月31日。按照运算符的运算顺序,+、-号优先于&号,所以(A2+1&-1)需要加括号。

示例2:生成一组不重复的随机整数
有两种方法可以实现这种功能,方法1使用辅助列,方法2使用数组公式。

方法1:使用RAND函数作辅助列,用RANK函数排序生成不重复的随机整数。
G列使用公式=RAND()得到一组随机数,H列使用公式=RANK(G2,$G$2:$G$26)得到每个随机数的排名,这样就间接得到了一组不重复的随机整数。



方法2:使用数组公式
=SMALL(IF(COUNTIF($I$1:I1,ROW($1:$26))=0,ROW($1:$26)),INT(RAND()*(21-ROW(1:1))+1))生成26个不重复的随机整数。 注意使用ctrl+shift+enter



示例3:生成一组随机的英文字母

思路是使用随机函数产生字母的数字代码,然后使用CHAR函数将其全部转换为英文字母。
首先必须知道大写英文字母的数字代码为65~90,小写英文字母的数字代码为97~122,使用RANDBETWEEN函数产生65~90的随机整数。
然后使用INT(RAND()*2)*32随机返回0或32,目的是实现大小写字母均有50%的出现概率。
最后使用CHAR函数将数字代码转换为英文字母。
最终的公式是:=CHAR(INT(RAND()*2)*32+RANDBETWEEN(65,90))



示例4:利用随机数制作加减乘除练习题

步骤 1:制作题目的编号,使用 TEXT 函数将编号设置为带括号的数字。
公式为=TEXT(ROW(A1),"(0)")
步骤 2:制作随机的加、减、乘、除符号。
公式为=MID("+-×÷",RANDBETWEEN(1,4),1)
步骤 3 :首先判断 C 列是否为乘或除符号,如果是,则产生 1~10 的随机整数,否则产生 0~99 的随机整数。
公式为:=IF(OR(C3={"×";"÷"}),INT(SQRT(RAND()*99))+1,RANDBETWEEN(0,99))
步骤 4 :使用 FIND 函数查询加、减、乘、除符号的位置,通过 CHOOSE 函数选择对应的随机数范围。
公式为:
=CHOOSE(FIND(C3,"+-×÷"),RANDBETWEEN(0,99-D3),RANDBETWEEN(D3,99),RANDBETWEEN(0,INT(99/D3)),RANDBETWEEN(0,INT(99/D3))*D3)
步骤5:最后一列输入=即可,效果见下图:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-3-15 20:12 , Processed in 0.110231 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表