殊途同归:不用Power Query,一个公式也能做九九乘法表



Lv.3优质创作者
WPS Query高级编辑器正式上线啦!HC.旋老师发布了用M函数制作九九乘法表的教程帖,我按照操作一步步实现后,也想分享给感兴趣的小伙伴——点击下方链接即可跳转查看↓
https://bbs.wps.cn/topic/101426
WPS Office使用版本:12.1.0.29670 64位
承接HC.旋老师用M函数做九九乘法表的思路,这里再补一个“零门槛”续篇:不用Power Query,不写M函数,只用一个公式就能在表格里铺出整张九九乘法口诀表。M函数版胜在能进Power Query做后续处理,公式版胜在即写即得、随手可用——两条路殊途同归,正好对照着看。
之前的教程我都是先写公式再去逐一介绍,这次我们换个方式,从0开始思考如何一步步实现。
第一步:先算出积c
要实现公式自动提取这两个数,可以用函数ROW 返回行号和 COLUMN返回列号。在A1单元格输入=COLUMN()*ROW(),即可计算得到积c。
第二步:把算式拼出来
=COLUMN()&"×"&ROW()&"="&COLUMN()*ROW()
第三步:用 IF 筛掉重复项
第四步:升级成区域数组,一个格子铺满
最终我们得到一个公式,以实现九九乘法表:
=IF(ROW(A1:I9)>=COLUMN(A1:I9),COLUMN(A1:I9)&"×"&ROW(A1:I9)&"="&COLUMN(A1:I9)*ROW(A1:I9),"")
说到九九乘法表,让我想起以前帮别人做个一个随机生成加减法运算的表格,那么这样批量的表是如何做的呢?我们以生成随机的100以内的二次加减法为例,生成能铺满一页的算式。
100以内的二次加减法,也就是生成a±b±c=d的算式,abcd都为0到100的整数,且计算过程中不应该出现负数,那这样的算式应该怎么写公式呢。
第一步:先确定a
第二步:生成中间的运算符
我们还可以换一种写法:=IF(RAND()>0.5,"+","-"),可以通过调整阈值来控制生成的"+"和"-"的比例。
第三步:生成b并控制结果不超过范围
若运算符为"+",b 取 0 到 100 -a的随机整数
若运算符为"-",b 取 0 到 a 的随机整数
嵌套一个IF语句把两种情况合并:=IF(B2="+",RANDBETWEEN(0,100-A2),RANDBETWEEN(0,A2))
第四步:生成c并控制结果不超过范围
第五步:将这些内容连接成文本
如果需要备注答案,可以用=EVALUATE(A2&B2&C2&D2&E2)进行计算。
这样写好一行就是一个算式,按F9就能刷新,如果想要更多就往下填充即可。
到这里也只是实现了批量生成算式,但那么多辅助列,打印出来就很难看,如何把这些算式平铺在纸上呢?
第六步:将生成的算式平铺在一页上
在A1单元格写上公式=WRAPROWS('2 100以内加减法'!G2:G100,4,""),就可以将刚才生成的算式转换为一个4列的区域。
但是这样有个局限,如果想生成更多,还得调整引用区域,如果之间引用整列,又会将所有的行都转换,就会得到一个1048576个单元格的区域,没有公式的单元格会显示为0,并且打印会全部打印出来,表格还会巨卡。
这个时候我们用FILTER函数将非空区域筛选出来,FILTER函数的功能是根据条件筛选出区域或数组,最终公式写为:
=WRAPROWS(FILTER('2 100以内加减法'!G:G,'2 100以内加减法'!G:G<>""),4,"")
设置好行高列宽、字体字号,即可完成一份100以内的加减法算式。
我们还可以把下限0和上限100定义为名称,通过改变上限和下线的数组以实现更多的应用场景,关于名称管理器是如何使用的,请大家关注我后续发帖(主要内容已基本完成,近期发布后会修改此处,添加跳转链接)。
本期的内容都很简单,按照步骤一步一步自己就能实现,因此没有放过多图片展示操作步骤,如果想要之间获取案例文件可以之间点击下方链接进行下载 ↓
https://www.kdocs.cn/l/ctyIs1lXMZuw
100以内的加减法,要是用WPS Query该怎么实现呢?隔空喊话HC.旋老师,快去出新教程吧~
Lv.3 优质创作者
Lv.3优质创作者