ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 365函数 Groupby 用法学习

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-28 21:52 | 显示全部楼层 |阅读模式
题目:一则Groupby函数练习题,要求统计累计销售额达到150后,分组统计达到150所需天数,及其累计值。

问题:原练习题A列为连续日期,因此在 Groupby 函数中使用 ROWS 作为统计天数没有问题,如方法1、方法2。但是,当日期非连续时,这样算结果显然是错误的。演示的方法3可以避免这种错误。现在的问题是,方法3思路虽然简单明了,但公式太复杂了,能否有简单一点的方法?
image.png

365函数-Groupby函数.rar

11.88 KB, 下载次数: 43

TA的精华主题

TA的得分主题

发表于 2024-1-28 22:29 | 显示全部楼层
  1. =LET(_b,SCAN(0,SCAN(,B2:B22,LAMBDA(x,y,IF(x>150,y,x+y)))=B2:B22,SUM),HSTACK(GROUPBY(_b,B2:B22,VSTACK(HSTACK(SUM,LAMBDA(x,ROWS(x))),{"累计值","天数"}),0,0),GROUPBY(_b,A2:A22,VSTACK(HSTACK(MIN,MAX),{"开始日期","完成日期"}),0,0)))
复制代码
这样可以不?

image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-28 22:33 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 edwin11891 于 2024-1-28 22:43 编辑
alan57 发表于 2024-1-28 22:29
这样可以不?

不错,学习了!

有两个瑕疵:
       1 是多了一个序号列,当然这个使用take或drop函数在第二个Groupby函数部分解决掉。
       2是天数计算还是用的 ROWS(x)方法,而不是实际天数相减。比如将第一天 2023/3/1改为2023/2/1,天数应该是 32,而不是 4。



TA的精华主题

TA的得分主题

发表于 2024-1-29 10:03 | 显示全部楼层
edwin11891 发表于 2024-1-28 22:33
不错,学习了!

有两个瑕疵:
  1. =LET(_b,SCAN(0,SCAN(,B2:B22,LAMBDA(x,y,IF(x>150,y,x+y)))=B2:B22,SUM),HSTACK(GROUPBY(_b,B2:B22,VSTACK(SUM,"累计值"),0,0),DROP(GROUPBY(_b,HSTACK(A2:A22,A2:A22,A2:A22),VSTACK(HSTACK(LAMBDA(x,MAX(x)-MIN(x)+1),MIN,MAX),{"天数","开始日期","完成日期"}),0,0),,1)))
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-29 10:08 | 显示全部楼层
  1. =LET(_b,SCAN(0,SCAN(,B2:B22,LAMBDA(x,y,IF(x>150,y,x+y)))=B2:B22,SUM),GROUPBY(_b,HSTACK(B2:B22,A2:A22,A2:A22,A2:A22),VSTACK(HSTACK(SUM,LAMBDA(x,MAX(x)-MIN(x)+1),MIN,MAX),{"累计值","天数","开始日期","完成日期"}),0,0))
复制代码
抄冬佬和醉佬的姿式,改过来的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-29 10:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

感谢!DROP 函数我自己琢磨用的take,其余一样!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-29 10:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
alan57 发表于 2024-1-29 10:08
抄冬佬和醉佬的姿式,改过来的。

另外请教一下,U2单元格,为什么想用 Hstack(sDays, Sleiji) 输出成两列会出错? 示例中只好将两列用分号连接。

TA的精华主题

TA的得分主题

发表于 2024-1-29 10:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
edwin11891 发表于 2024-1-29 10:26
另外请教一下,U2单元格,为什么想用 Hstack(sDays, Sleiji) 输出成两列会出错? 示例中只好将两列用分号 ...

没看明白??

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-29 11:22 | 显示全部楼层

是这样的,U2单元格是按照“实际天数方法过程”按步骤检验的,U2的输出本意是想得到 “天数”、“累计值”两列数据,在Lambda函数最后想利用 HSTACK(sDays, Sleiji)输出,但会出错。因此我在示例文件中只好折中在Lambda函数内输出 sDays & ";" & Sleiji,检验命名参数计算是否有误,显示结果没有问题。
简单来说,就是我想用   HSTACK(sDays, Sleiji) 得到两列,但是不知道为什么公式会出错。

多谢!

TA的精华主题

TA的得分主题

发表于 2024-1-29 11:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
edwin11891 发表于 2024-1-29 11:22
是这样的,U2单元格是按照“实际天数方法过程”按步骤检验的,U2的输出本意是想得到 “天数”、“累计值 ...

主要是你取的那些名字我没看懂,我的理解是,你想得到两列,可以在割肉函数二参设定相应的二列数据就可以了,我也是刚从大佬那儿学到的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 16:31 , Processed in 0.044647 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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