如何用Excel自动、批量且随机生成加减法口算题目,如“5 3=”、“10-5=”等?注意是自动、批量且随机生成,而不是手动逐个录入,最好还能刷新,每次生成的题目不同。对于这样的需求,功能强大的Excel肯定是可以做到的。这里介绍使用Excel内置函数编辑公式去实现这一需求。
分析以上需求,其中①数字需要随机生成,且应在某个范围内,如“5以内”或“10以内”;②符号需要随机生成,即“ ”和“-”要随机出现;③还需要保证没有超纲的错题,即不能出现被减数比减数小而结果为负数的情况,如“3-7=(-4)”。
“随机”当和Excel内置的随机数生成函数(RAND)联系起来。在Excel中“RAND()”用于生成一个大于或等于0且小于1的随机数,带小数部分。就是说如果需要一个大于或等于0且小于1的随机数,在目标单元格中输入“=RAND()”回车即可,不需要任何参数。那如果需要一个0到10的随机整数,公式可以写为“=ROUNDUP(RAND()*10, 0)”,其中“RAND()*10”取值为大于或等于0且小于10带小数部分的随机数,“ROUNDUP(RAND()*10, 0)”是将“RAND()*10”按照“只进不舍”的规则将结果修约为0位小数的数,也就是整数,这个公式的结果取值就是大于0且小于或等于10的整数(1、2、3、4、5、6、7、8、9、10)。
生成加法算式即可写成“=ROUNDUP(RAND()*10, 0) & " " & ROUNDUP(RAND()*10, 0)”,在单元格内输入该公式后按回车键,即可得到一个加法算式,并且当Excel触发自动重算或按F9键时,所有单元格的算式会自动更新,生成一组新的加法算式。
那减法算式的公式如何编写呢?减法涉及到一个被减数要比减数大的情况,如果仅使用Excel函数实现起来就比较困难。我们不妨固定被减数,如指定被减数为10,然后随机生成减数。同理,公式书写为“="10" & "-" & ROUNDUP(RAND()*10, 0)”,在单元格内输入该公式后按回车键,即可得到一个被减数为10的减法算式。同样的,当Excel触发自动重算或直接按F9键时,所有单元格的算式会自动更新,生成一组新的减法算式。如果需要被减数和减数都随机生成,后续为大家介绍使用VBA自定义函数去实现,这里先不引入VBA的使用。
以上得到了加法和减法的生成公式,如果加法和减法分别出题,如一列加法、一列减法,那在对应的列内填充相应的公式就可以了。如果希望加法和减法也是随机出现的,那就需要再套用一个函数。
分析思路,随机出现加和减,也就是两种情况中随机出现,不妨编写公式生成一个只有两种结果的随机数生成公式,使结果仅出现0和1。可以联想到整数除以2的余数不是1就是0,Excel中求余数的函数为“MOD”,使用上面的一些结论,公式可以编写为“=MOD(ROUNDUP(RAND()*10, 0), 2)”,即求一个大于0且小于或等于10的随机整数除以2的余数,其结果必然是0或1。因为被除数是随机生成的,那么0或1也是随机出现的,且出现0和1的概率一致。
再套用“IF”函数,公式写成“=IF(MOD(ROUNDUP(RAND()*10,0),2)=1, ROUNDUP(RAND()*10,0)&" "&ROUNDUP(RAND()*10,0)&"=", 10&"-"&ROUNDUP(RAND()*10,0)&"=")”。公式意义即为随机得到1时,生成加法算式,得到0时,生成减法算式。需要说明的是,公式里的四个RAND()函数独立运算、互不干扰,得到的随机数结果可能相同也可能不同。如需要不同的数字进行运算,可以在后续介绍VBA编写自定义函数去实现这一需求。
所以总结以上内容,随机生成一道10以内的加减法,公式编写为:
=IF(MOD(ROUNDUP(RAND()*10,0),2)=1, ROUNDUP(RAND()*10,0)&" "&ROUNDUP(RAND()*10,0)&"=", 10&"-"&ROUNDUP(RAND()*10,0)&"=")
同理,需要随机生成一道5以内或20以内的加减法,把其中生成随机数的“RAND()*10”改写为公式编写为“RAND()*5”或“RAND()*20”即可:
=IF(MOD(ROUNDUP(RAND()*10,0),2)=1, ROUNDUP(RAND()*5,0)&" "&ROUNDUP(RAND()*5,0)&"=", 5&"-"&ROUNDUP(RAND()*5,0)&"=")
=IF(MOD(ROUNDUP(RAND()*10,0),2)=1, ROUNDUP(RAND()*20,0)&" "&ROUNDUP(RAND()*20,0)&"=", 20&"-"&ROUNDUP(RAND()*20,0)&"=")