ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 365新函数:BOM结构父级子级-使用双循环替代递归

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-1 20:39 | 显示全部楼层
shaowu459 发表于 2023-8-30 08:43
下面是一个例子,来说明3楼说的那种比较麻烦的堆积方式。如下图,要根据A:C列的层级关系,来生成右侧绿色区 ...

跟着老大练习一下,和上一楼公式大同小异
  1. =LET(J,C2:C46,K,B2:B46,f,LAMBDA(f,m,[n],IF(n=7,m,f(f,IFNA(DROP(REDUCE(0,SEQUENCE(ROWS(m)),LAMBDA(x,y,LET(a,INDEX(m,y),b,SORT(FILTER(K,TAKE(a,,-1)=IF(J>0,J),"")),VSTACK(x,HSTACK(a,b))))),1),""),n+1))),f(f,B4)&CHAR(10)&XLOOKUP(f(f,B4),K,A2:A46,""))
复制代码
1.png
微信截图_20240801203657.png

TA的精华主题

TA的得分主题

发表于 2024-10-17 11:24 | 显示全部楼层
本帖最后由 咔咔乱坠 于 2024-10-18 17:11 编辑

果然,链条就是要有链条才好看,弄个单元格居中和产生从属链条的自定义函数
要求版本:excel365
注意事项:两个参数:必选参数ref,需为单元格引用,数据源的上侧右侧不能有东西
                                                        可选参数center,1为居中,0为不居中,默认为0
  1. =LAMBDA(ref,[center],LET(D,DROP,V,VSTACK,H,HSTACK,R,REDUCE,S,SEQUENCE,I,INDEX,O,LAMBDA(R,c,OFFSET(ref,R,c)),链,IFS(O(,1)="","",(O(-1,)<>ref)*(O(1,)<>ref),"─",O(-1,)<>ref,"┌",ref<>O(1,),"└",1,"│"),中,IF(center,D(R(0,S(COLUMNS(ref)),LAMBDA(J,K,H(J,LET(序1,SCAN(0,I(ref,,K),LAMBDA(x,y,x+(y<>OFFSET(y,-1,)))),XLOOKUP(D(R(0,UNIQUE(序1),LAMBDA(x,y,V(x,LET(序2,SUM(N(序1=y)),IF(S(序2)=--TEXT(序2/2,0),y))))),1),序1,I(ref,,K),""))))),,1),IF(IFNA(V(1,DROP(ref,1)<>DROP(ref,-1)),1),ref,"")),D(R(0,S(COLUMNS(链)),LAMBDA(x,y,H(x,I(中,,y),I(链,,y)))),,1)))(A2:D26,1)
复制代码
简化掉一百个字符
  1. =LAMBDA(ref,[center],LET(o,LAMBDA(r,c,OFFSET(ref,r,c)),链,IFS((o(,1)="")*(COLUMNS(ref)>1),"",(o(-1,)<>ref)*(o(1,)<>ref),"-",o(-1,)<>ref,"┌",ref<>o(1,),"└",1,"│"),DROP(REDUCE(0,SEQUENCE(COLUMNS(ref)),LAMBDA(J,K,LET(a,INDEX(ref,,K),序,SCAN(0,a,LAMBDA(x,y,x+(y<>OFFSET(y,-1,)))),HSTACK(J,IF(DROP(REDUCE(0,FREQUENCY(序,UNIQUE(序)),LAMBDA(x,y,IF(y,VSTACK(x,SEQUENCE(y)=IF(center,ROUND(y/2,),1)),x))),1),a,""),INDEX(链,,K))))),,1)))(A2:D26,1)
复制代码




1729135389102.jpg

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-17 15:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-17 22:27 | 显示全部楼层
咔咔乱坠 发表于 2024-10-17 11:24
果然,链条就是要有链条才好看,弄个单元格居中和产生从属链条的自定义函数
要求版本:excel365
注意事 ...

就是把上级弄到靠近中间的位置,类似合并单元格那种效果?

TA的精华主题

TA的得分主题

发表于 2024-10-18 00:26 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shaowu459 发表于 2024-10-17 22:27
就是把上级弄到靠近中间的位置,类似合并单元格那种效果?

对,就是类似合并单元格居中再加上谁属于谁的括号,组成链条,趣味函数,好玩弄的,超老大玩了吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 08:43 来自手机 | 显示全部楼层
咔咔乱坠 发表于 2024-10-18 00:26
对,就是类似合并单元格居中再加上谁属于谁的括号,组成链条,趣味函数,好玩弄的,超老大玩了吗

之前写过第一步的,把一样的内容留一个放在中间,加上横线没写过,有空试试

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 09:06 | 显示全部楼层
咔咔乱坠 发表于 2024-10-17 11:24
果然,链条就是要有链条才好看,弄个单元格居中和产生从属链条的自定义函数
要求版本:excel365
注意事 ...

这个是用的哪个数据源,几楼的附件?看公式写的范围是A2:D26

TA的精华主题

TA的得分主题

发表于 2024-10-18 10:25 | 显示全部楼层
shaowu459 发表于 2024-10-18 09:06
这个是用的哪个数据源,几楼的附件?看公式写的范围是A2:D26

我小改了一下数据源,是这个

1729218374826.jpg

居中和链条.zip

23.2 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 10:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
咔咔乱坠 发表于 2024-10-18 10:25
我小改了一下数据源,是这个

了解了,用展开后的去整理格式了,还利用了单元格属性。我还是从AB两列数据源开始吧,一个意思,应该不用利用单元格属性。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 14:22 | 显示全部楼层
咔咔乱坠 发表于 2024-10-18 10:25
我小改了一下数据源,是这个

还是从AB两列数据源:
  1. =LET(A,A2:A48,B,B2:B48,f,LAMBDA(f,arr,DROP(REDUCE(0,arr,LAMBDA(x,y,VSTACK(x,IF(OR(y=A),LET(s,f(f,FILTER(B,A=y)),r,ROWS(s),t,SEQUENCE(r),u,IF(r=1,"-",IF(t=1,"┌",IF(t=r,"└"," |"))),HSTACK(IF(t=ROUND(r/2,),y,""),u,s)),y)))),1)),IFNA(f(f,UNIQUE(A)),""))
复制代码

图片.jpg

BOM结构-超人.rar

22.46 KB, 下载次数: 3

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 11:21 , Processed in 0.049278 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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