ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 365新函数:GROUPBY函数一帖通

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-8 12:04 | 显示全部楼层
回吧天堂 发表于 2024-12-8 11:30
感谢指教。我还有一个问题,FUNCTION部分的VSTACK我不太理解,不知道它堆的是什么?于是我就把VSTACK去掉 ...

我的公式里加了是么?如果有的话可能是在改公式的过程中没有清除干净。

TA的精华主题

TA的得分主题

发表于 2024-12-8 15:13 | 显示全部楼层
shaowu459 发表于 2024-12-8 12:04
我的公式里加了是么?如果有的话可能是在改公式的过程中没有清除干净。

对,你的公式里加了这个VSTACK.

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-8 15:25 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
回吧天堂 发表于 2024-12-8 15:13
对,你的公式里加了这个VSTACK.

那就是没去处干净,去掉就可以了,vstack只一个参数就没啥用

TA的精华主题

TA的得分主题

发表于 2024-12-15 16:22 | 显示全部楼层
给水果分组这个练习,下面这个公式虽然复杂些,也没有用GROUPBY,但很有学习价值,已经接近理解了,但最关键的地方还是不明白,公式是:
=IFNA(REDUCE(A1:B1,A2:A33,LAMBDA(X,Y,IF(Y>0,VSTACK(X,HSTACK(Y,DROP(REDUCE(0,OFFSET(Y,,1,MATCH(6=9,DROP(Y:A34=0,1),-1)),LAMBDA(M,N,IF(OR(N=K1:K11)*OR(TEXTAFTER(TAKE(M,-1),"、",-1,,1)=K1:K11),VSTACK(DROP(M,-1),TAKE(M,-1)&"、"&N),VSTACK(M,N)))),1))),X))),"")
内容有点多,分在下一楼阐述。
水果分组.JPG

TA的精华主题

TA的得分主题

发表于 2024-12-15 16:42 | 显示全部楼层
本帖最后由 回吧天堂 于 2024-12-15 19:45 编辑

以小青为例,reduce初始值是0,当N是苹果时,M是纵向堆叠的0;订书机;钳子,TEXTAFTER(TAKE(M,-1),"、",-1,,1)=K1:K11)就是钳子、,顿号后面没有字符,和水果区域比较,为FALSE。
有些语焉不详,很抱歉。总之就是第二个reduce不太理解,初始值是0,数组是每个人的采购类型,这些理解了,就是lambda部分不太明白。这是不是醉清风老师的公式?
很好的公式,没理解透,又不舍得放过。
第二个LAMBDA里的IF判断条件里,N要是水果,TEXTAFTER部分不太理解,判断为FALSE时,VSTACK(M,N),堆的是非水果的商品,判断为TRUE时,VSTACK(DROP(M,-1),TAKE(M,-1)&"、"&N)就不太理解了。

TA的精华主题

TA的得分主题

发表于 2024-12-18 16:21 | 显示全部楼层
请问,装箱这个练习,SEQUENCE(ROWS(s))-1)/160中,为什么要减1?完整的公式如下:
=LET(s,TOCOL(IF(B2:B7>=SEQUENCE(,999),A2:A7,\),3),SORTBY(GROUPBY(HSTACK(1+INT((SEQUENCE(ROWS(s))-1)/160),s),HSTACK(s,VLOOKUP(s,A:B,2,)),HSTACK(ROWS,MAX),,0),{3,1,4,2}))
另外一个问题,SORTBY的第二个参数{3,1,4,2},是不是设定排序优先级,按第3列 第1列 第4列 第2列升序排序?
装箱.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-18 16:42 | 显示全部楼层
回吧天堂 发表于 2024-12-18 16:21
请问,装箱这个练习,SEQUENCE(ROWS(s))-1)/160中,为什么要减1?完整的公式如下:
=LET(s,TOCOL(IF(B2:B7 ...

INT((SEQUENCE(ROWS(s))-1)/160)这个是比较常用的需要创建,可以产生160个0,160个1,这样的序列。如果不-1,直接除以160是会有偏差的,达不到目的。sortby第二参数是{3,1,4,2},这样排序依据升序排列,可以达到把原数据第2列排到第1列,第4列排到第2列,第1列到排到第3列。建议可以直接在单元格中输入一些数据,然后sortby看看结果。

TA的精华主题

TA的得分主题

发表于 2024-12-18 17:33 | 显示全部楼层
shaowu459 发表于 2024-12-18 16:42
INT((SEQUENCE(ROWS(s))-1)/160)这个是比较常用的需要创建,可以产生160个0,160个1,这样的序列。如果不- ...

感谢

TA的精华主题

TA的得分主题

发表于 2024-12-24 16:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我又来了,最后一个案例,按月份汇总金额,下面这个公式非常好:
=DROP(GROUPBY(HSTACK(MATCH(A2:A24,A2:A24,),A2:A24),B2:C24,HSTACK(LAMBDA(x,TEXTJOIN("/",,T(GROUPBY(SCAN(0,MAP(x,LAMBDA(c,AND(--TEXT(EDATE(TEXT(c,"0000!-00!-!1"),-1),"emm")<>x))),SUM),x,LAMBDA(x,TEXTJOIN("-",,UNIQUE(N(TAKE(x,{1;-1}))))),0,0)))),SUM),0,0),1,1)
但是,UNIQUE(N(TAKE(x,{1;-1})))中的UNIQUE和N函数有什么意义?我把UNIQUE和N去掉,结果是一样的。
N难道是降维?用UNIQUE,也没什么要去重的吧?
month.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-24 16:46 | 显示全部楼层
回吧天堂 发表于 2024-12-24 16:27
我又来了,最后一个案例,按月份汇总金额,下面这个公式非常好:
=DROP(GROUPBY(HSTACK(MATCH(A2:A24,A2:A ...

这个太久了,印象不清楚。但是你可以考虑是不是有这样一种情况,月份只有202301这个月份,不是两个或以上月份。可能是为了避免出现202301-202301这种情况,你可以改改数据源试试。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-5 14:06 , Processed in 0.024935 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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