ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 二维转一维的公式优化

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-15 16:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =LET(T,TOCOL(C2:D2),REDUCE({"工位","排期","车号1"},B3:B5,LAMBDA(X,Y,LET(_T,TEXTSPLIT(TEXTJOIN(",",TRUE,OFFSET(Y,0,1,1,2)),CHAR(10),",",TRUE),
  2. VSTACK(X,DROP(IFNA(HSTACK(Y,REDUCE("",T,LAMBDA(_X,_Y,VSTACK(_X,IFNA(HSTACK(_Y,TOCOL(FILTER(_T,_Y=T,""))),_Y))))),Y),1))))))
复制代码


好像也差不多长度,坐等其他大佬来看看

TA的精华主题

TA的得分主题

发表于 2024-6-17 16:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shaowu459 发表于 2024-6-15 14:27
一种写法供参考。

怎么用名称管理器定义成函数,也就是把f2:h2和c3:d5,定义成为名称管理器函数的参数呢?

TA的精华主题

TA的得分主题

发表于 2024-6-17 17:05 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lookcd 发表于 2024-6-17 16:49
怎么用名称管理器定义成函数,也就是把f2:h2和c3:d5,定义成为名称管理器函数的参数呢?

你是说定义lambda函数,然后引用那两个参数?

TA的精华主题

TA的得分主题

发表于 2024-6-18 09:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shaowu459 发表于 2024-6-17 17:05
你是说定义lambda函数,然后引用那两个参数?

是的,版主大人,就是想定义成名称管理器函数的形式:
自定义转换函数(标题区域,数据区域),然后实现版主的公式功能,也就是reduce能和lambda组合到一起用名称管理器自定义一个函数。
=REDUCE(标题区域,数据区域,LAMBDA(x,y,VSTACK(x,CHOOSE({1,2,3},OFFSET(y,,2-COLUMN(y)),OFFSET(y,2-ROW(y),),TEXTSPLIT(y,,CHAR(10)))))),怎么实现呢?

TA的精华主题

TA的得分主题

发表于 2024-6-18 10:11 | 显示全部楼层
lookcd 发表于 2024-6-18 09:47
是的,版主大人,就是想定义成名称管理器函数的形式:
自定义转换函数(标题区域,数据区域),然后实现 ...

这个意思吧,定义一个名称fx,公式是下面的(不能包括最后的括号及里面的参数),然后在单元格中输入=fx(标题,循环区域)就行了。但是要注意,因为根据原始数据行列位置特点,公式里写了固定的2-row和2-column,这俩其实也可以通过第一参数和第二参数获得,我就不改了。

  1. =LAMBDA(m,n,REDUCE(m,n,LAMBDA(x,y,VSTACK(x,CHOOSE({1,2,3},OFFSET(y,,2-COLUMN(y)),OFFSET(y,2-ROW(y),),TEXTSPLIT(y,,CHAR(10)))))))(B2:D2,C3:D4)
复制代码

图片.jpg
图片.png

TA的精华主题

TA的得分主题

发表于 2024-6-18 10:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shaowu459 发表于 2024-6-18 10:11
这个意思吧,定义一个名称fx,公式是下面的(不能包括最后的括号及里面的参数),然后在单元格中输入=fx( ...

感谢版主大人的回复,您的回答就是想要实现的结果,
也就是说只要定义成名称名称管理器函数的形式都要在原来的自定义函数最外层再套一个LAMBDA结构

TA的精华主题

TA的得分主题

发表于 2024-6-18 10:38 来自手机 | 显示全部楼层
lookcd 发表于 2024-6-18 10:27
感谢版主大人的回复,您的回答就是想要实现的结果,
也就是说只要定义成名称名称管理器函数的形式都要在 ...

差不多就是这个意思。把参数灵活的传给原来的计算公式即可。需要注意一些细节,保证通用性。

TA的精华主题

TA的得分主题

发表于 2024-6-18 11:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shaowu459 发表于 2024-6-15 14:27
一种写法供参考。

这里 choose({1,2,3}...)方式,比IFNA(hstack(...),"")效果好,常规情况下,我会习惯性使用 hstack。

TA的精华主题

TA的得分主题

发表于 2024-6-18 11:40 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
edwin11891 发表于 2024-6-18 11:26
这里 choose({1,2,3}...)方式,比IFNA(hstack(...),"")效果好,常规情况下,我会习惯性使用 hstack。[em0 ...

根据实际情况选取
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 16:07 , Processed in 0.043760 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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