ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: shaowu459

[原创] LAMBDA函数递归:完全背包问题+10个元素全部子集

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-2-6 20:25 | 显示全部楼层
可以不用自定义名称了么?感觉很麻烦

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-6 22:05 来自手机 | 显示全部楼层
jinhaitiao168 发表于 2025-2-6 20:25
可以不用自定义名称了么?感觉很麻烦

可以不用的,没有问题。其他帖子里有
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2025-2-6 22:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:01 | 显示全部楼层
这个1~10的组合的公式,让我陆陆续续地研究了半个月。
在对基础函数的用法不是很精通的情况下,我感觉这个公式的难度是很大的。
至少我就在3个地方遇到了卡点,然后开始了漫长的拆解之旅。
1,fx(DROP(SEQUENCE(10),y))里的SEQUENCE(10)为什么不能用z?--这个z是除了初始值外,每次经历递归,都会相应变化。我看示例结果的结构图才恍然大悟。
2,hstack(0,y)为什么不能直接用y?--IFNA的二参问题。
3,这个递归思路怎么得出来的?--我看结构图大致了解了,但目前没能用文字精准描绘(也就是我还在似懂非懂状态中)

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我的第1和第3的卡点,就是看这个1~5的组合结构图看出一点端倪的。
虽然还不是很懂超人老师的公式的核心思路怎么来,但这个套路我却知道怎么用了
所有1~n的连续自然数的非空子集组合都能用上~
所以我根据我的需求把公式调整了一下~
n可以是任意不小于1的正整数。以下公式我设置为5。
=LET(n,5,f,LAMBDA(f,z,REDUCE(z,z,LAMBDA(x,y,IF(y=n,x,VSTACK(x,IF(y=n-1,IF({1,0},n-1,n),DROP(IFNA(HSTACK(HSTACK(0,y),f(f,DROP(SEQUENCE(n),y))),HSTACK(0,y)),,1))))))),IFNA(f(f,SEQUENCE(n)),""))


1.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:19 | 显示全部楼层
本帖最后由 stacymeowmeow 于 2025-12-1 17:21 编辑

卡点2是醉清风大佬帮忙解决的。

02--IFNA的二参为数组,则受源数据行列数限制。.png
03--IFNA的二参为单行或者单列数组,会按照源数组的行或列方向填充.png
01--IFNA的二参为单值,不受源数据行列数限制.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-1 17:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
stacymeowmeow 发表于 2025-12-1 17:07
我的第1和第3的卡点,就是看这个1~5的组合结构图看出一点端倪的。
虽然还不是很懂超人老师的公式的核心思 ...

纯从公式结果去推思路,确实不太好弄,只能一步一步的看产生的结果是啥。

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shaowu459 发表于 2025-12-1 17:22
纯从公式结果去推思路,确实不太好弄,只能一步一步的看产生的结果是啥。

感谢超版的鼓励~~
第一次收到鲜花,超级开心~~学习起来都多了两倍劲~

TA的精华主题

TA的得分主题

发表于 2025-12-23 10:32 | 显示全部楼层
老师,我这个公式值50的话还能正常计算,加到90就显示错误了,这个是什么原因呢
  1. =LET(n,N2:N7,p,50,a,DROP(REDUCE(HSTACK(n&"="&n,0),SEQUENCE(p/MIN(n)+1),LAMBDA(x,y,LET(x_1,TOCOL(TAKE(x,,1),3),x_2,TOCOL(TAKE(x,,-1),2),上一步累加值,TEXTBEFORE(x_1,"="),上一步累加公式,TEXTAFTER(x_1,"="),本次累加,TOCOL(上一步累加值+TOROW(n)),本次累加公式,UNIQUE(本次累加&"="&MAP(TOCOL(上一步累加公式&"+"&TOROW(n)),LAMBDA(w,TEXTJOIN("+",,SORT(--TEXTSPLIT(w,,"+")))))),IF(TAKE(x_1,1)=0,x,HSTACK(FILTER(本次累加公式,--TEXTBEFORE(本次累加公式,"=")<p,0),VSTACK(x_2,FILTER(本次累加公式,--TEXTBEFORE(本次累加公式,"=")=p,0))))))),,1),FILTER(a,a<>0))
复制代码
360截图20251223102749.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-23 10:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mao12306 发表于 2025-12-23 10:32
老师,我这个公式值50的话还能正常计算,加到90就显示错误了,这个是什么原因呢

我这里直接复制你上楼的公式使用就出现#N/A的错误,,无法继续分析,不知道是不是两个软件不兼容的问题。另外,如果小数据正确,数字大了不正确,返回的是不是#num的错误?是不是返回结果数据太大了?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-25 18:01 , Processed in 0.024559 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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