ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: shaowu459

[讨论] Microsoft 365:关于函数公式解数独的探讨

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-26 19:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:LAMBDA
24个数字题目,目前做的数字最少的一个题目,递归18秒,循环1分51秒。


39E_(G~X)XAV[(CG[@F46~P.png

TA的精华主题

TA的得分主题

发表于 2023-9-26 21:13 | 显示全部楼层
shaowu459 发表于 2023-9-21 10:09
上述思路下完整的参考公式如下,大家有更高效率的循环方法也请不吝赐教(公式已更新):

你牛得不行,这也叫公式呀,顶礼膜拜!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-27 08:56 | 显示全部楼层
最新文件更新在19楼。

TA的精华主题

TA的得分主题

发表于 2023-11-3 14:59 | 显示全部楼层
shaowu459 发表于 2023-9-21 09:30
因为要判断当前要填数字(也就是0所在的位置)所在的行、列和九宫中已有数字是否重复,所以,首先要获得当 ...

老师您好我有个疑问,C2所在的列不应该是C2:C10吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-3 15:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 shaowu459 于 2023-11-3 15:38 编辑
wzdzuihao 发表于 2023-11-3 14:59
老师您好我有个疑问,C2所在的列不应该是C2:C10吗?

对,应该是笔误,搞成B列了。我更新一下。

图不好改,我直接在公式处加了标注,谢谢。

TA的精华主题

TA的得分主题

发表于 2024-1-8 23:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-10 23:27 | 显示全部楼层
刚才测试了下递归的fx、gx,貌似fx的快一点,i7 12700k大约10秒。后来将fx从名称管理器中取出,整合到单个函数中,速度快一倍,5秒就行了。看来这和调用名称管理器的函数相比,机制明显不同。
=LET(na,SEQUENCE(81),nb,SEQUENCE(9),fx,LAMBDA(fx,z,IF(AND(z>0,z<10),z,LET(行,LAMBDA(x,INT((x-1)/9)+1),列,LAMBDA(x,MOD(x-1,9)+1),九宫,LAMBDA(x,INT(MOD(x-1,9)/3)+1+3*INT((x-1)/27)),筛,LAMBDA(x,y,FILTER(z,x=y)),位置,MATCH(0,z,),行判,筛(行(na),行(位置)),列判,筛(列(na),列(位置)),九宫判,筛(九宫(na),九宫(位置)),备选,TOCOL(nb/ISNA(MATCH(nb,VSTACK(行判,列判,九宫判),)),3),IFNA(IFS(SUM(N(z=0))=1,IF(na=位置,备选,z),COUNT(备选)=0,z),DROP(REDUCE(0,备选,LAMBDA(m,n,HSTACK(m,IFERROR(fx(fx,IF(na=位置,n,z)),IF(na=位置,"@",z))))),,1))))),s,REDUCE(TOCOL(--B2:J10),ROW(1:4),LAMBDA(x,y,LET(u,IF(y=1,x,FILTER(x,BYCOL(x,LAMBDA(v,OR(v="@")+AND(v>0,v<10))))),DROP(REDUCE(0,SEQUENCE(COLUMNS(u)),LAMBDA(m,n,HSTACK(m,fx(fx,N(INDEX(u,,n)))))),,1)))),WRAPROWS(TAKE(FILTER(s,BYCOL(s,LAMBDA(x,NOT(OR(x=0))))),,1),9))
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 22:52 , Processed in 1.036132 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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