ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 合并单元格整理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-26 11:36 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ggw092 于 2024-6-26 13:31 编辑

如图需要把合并单元格内容转换成图示区域,希望用动态数组一键生成。

image.jpg

合并单元格数据整理.zip

10.14 KB, 下载次数: 28

TA的精华主题

TA的得分主题

发表于 2024-6-26 12:20 | 显示全部楼层
本帖最后由 part98 于 2024-6-26 12:44 编辑

image.jpg
展开顺序不一样
  1. =REDUCE(B2:D2,C3:C9,LAMBDA(x,y,LET(c,TEXTSPLIT(LOOKUP("座",B3:OFFSET(y,,-1)),,"、"),VSTACK(x,HSTACK(c,T(SEQUENCE(ROWS(c)))&HSTACK(y,LOOKUP("座",D3:OFFSET(y,,1))))))))
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-26 13:23 | 显示全部楼层
part98 发表于 2024-6-26 12:20
展开顺序不一样

感谢,大强大了,顺序不一样,不影响

TA的精华主题

TA的得分主题

发表于 2024-6-26 15:16 | 显示全部楼层
=LET(a,TRANSPOSE(SCAN(0,TRANSPOSE(B2:D9),LAMBDA(x,y,IF(y>0,y,x)))),DROP(REDUCE(0,SEQUENCE(ROWS(a)),LAMBDA(x,y,VSTACK(x,IFNA(HSTACK(TEXTSPLIT(INDEX(a,y,1),,"、",1),INDEX(a,y,{2,3})),INDEX(a,y,))))),1))
1719386163221.jpg

TA的精华主题

TA的得分主题

发表于 2024-6-26 15:16 | 显示全部楼层
写个长点的双循环,供参考。再多一些列合并层次也应该OK。
  1. =LET(s,TRANSPOSE(SCAN(,TRANSPOSE(B3:D9),LAMBDA(x,y,IF(y=0,x,y)))),t,TAKE(s,,1),REDUCE(B2:D2,UNIQUE(t),LAMBDA(x,y,REDUCE(x,TEXTSPLIT(y,"、"),LAMBDA(m,n,VSTACK(m,IFNA(HSTACK(n,FILTER(DROP(s,,1),t=y)),n)))))))
复制代码

图片.png
图片.png

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-26 18:14 | 显示全部楼层
  1. =REDUCE(B2:D2,B3:B9,LAMBDA(X,Y,IF(Y>0,VSTACK(X,DROP(REDUCE(0,TEXTSPLIT(Y,"、"),LAMBDA(M,N,VSTACK(M,IFNA(HSTACK(N,MAP(OFFSET(Y,,1,MATCH(1=0,DROP(Y:B10=0,1),-1),2),LAMBDA(X,IF(X>0,X,OFFSET(X,-1,))))),N)))),1)),X)))
复制代码

TA的精华主题

TA的得分主题

发表于 2024-6-26 21:54 | 显示全部楼层
借楼练一下PQ。


是这个效果吗? PQ 难道就真不如 晦涩难懂的公式???
捕获2.PNG
捕获.PNG

TA的精华主题

TA的得分主题

发表于 2024-6-26 22:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shaowu459 发表于 2024-6-26 15:16
写个长点的双循环,供参考。再多一些列合并层次也应该OK。

借用超版的方法,但后面不用双循环,单循环也够。
  1. =LET(s,TRANSPOSE(SCAN(,TRANSPOSE(B3:D9),LAMBDA(x,y,IF(y=0,x,y)))),t,TAKE(s,,1),n,TEXTSPLIT(TEXTJOIN("、",,B3:B9),,"、"),Res,REDUCE(B2:D2,n,LAMBDA(x,y,VSTACK(x,IFNA(HSTACK(y,FILTER(DROP(s,,1),ISNUMBER(FIND(y,TAKE(s,,1))))),y)))),Res)
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-26 22:51 来自手机 | 显示全部楼层
edwin11891 发表于 2024-6-26 22:43
借用超版的方法,但后面不用双循环,单循环也够。


不错,思路多多我自己一般是不用字符串合并拆分解决问题的纯个人喜好,总觉得这样会有些限制。尤其是多列二维表展开那种。还是挨个拆分堆积比较放心

TA的精华主题

TA的得分主题

发表于 2024-6-27 18:47 | 显示全部楼层
shaowu459 发表于 2024-6-26 15:16
写个长点的双循环,供参考。再多一些列合并层次也应该OK。

如果函数搞这么长,感觉用VBA还方便,可能更高效
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 09:20 , Processed in 0.042035 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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