分享

Excel技巧应用篇:一秒出一套数独题?Excel六步就搞定

 每天学学Excel 2022-02-15

背景

突然迷上了数独。不是喜欢求解,而是喜欢出题——一套题能让孩子做好半天。用Excel一秒出一套,这事半功倍的带娃技能要不要?

过程

数独的规则就是每行每列每个宫都由不重复的1~9组成。网上不少编程算法还有源码,但编程对于大多数网友来说还是有些门槛的。我们看看用Excel怎么实现他。注:步骤1~5全在Sheet2中,步骤6才回到Sheet1。

1. 预置

在Sheet2中预置一个完整的数独,百度搜一套就行。

2. 生成辅助列A

用rand()生成9个随机数(列A)。

  1. A12输入公式:=RAND()

  2. 拖拽至A20

3. 生成辅助列B

再用rank()排序就能生成1~9的随机序列(列B)。

  1. B12输入公式:=RANK.EQ(A12,$A$12:$A$20)

  2. 拖拽至B20

4. 生成辅助列C

在序列B的基础上生成一个“下一个数字”的序列C。

  1. C12输入公式:=B13

  2. 拖拽至C19

  3. C20输入公式:=B12

5. 数字替换

预置数独中的每一个数n,在序列B中找到n(如B18),则序列C中相同位置的数(如C18)就是生成新数独的值。对预置数独所有数字替换一遍就可以生成一个新的数独。

  1. 在L2输入公式:=VLOOKUP(A2,$B$12:$C$20,2,0)

  2. 拖拽至L10

  3. 拖拽至T10

用格式刷刷一下,再按F9刷新,是不是有点儿样子啦?别急,在A1格输入5作为遮蔽比例的控制变量(大体精度10%,B1可以填入文字注释以免以后忘记怎么用)。经过试验,感觉显示四、五成的数效果还可以(也就是参数选择5或者6比较合适)。至此,Sheet2的工作完毕。

6. 遮蔽

最后一步,将新数独的部分数字遮蔽就大功告成了。下列操作切换回Sheet1。

  1. 在A1输入公式:=IF(RAND()*10>Sheet2!$A$1,Sheet2!L2,"")

  2. 拖拽至A9

  3. 拖拽至I9

调整一下边框样式,接下来就可以按F9爽啦!如果打印出来,一页可以放好几个(就像题图一样),够娃做会儿的了。

后记

本方法仅供消遣,并不能确保解的唯一性。欢迎探讨。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多