ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: yangqianming

[已解决] 两表比对汇总数据

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-6-8 21:15 | 显示全部楼层
edwin11891 发表于 2025-6-8 15:46
先凑数,准备各列基础数据,最后GROUPBY函数汇总。
信息表中缺  阮班坤 的信息,所以导致结果有错误行。
...

按您的逻辑我把前面都搞对了,但最后未就餐名单搞不出来,有时间能帮我写一下吗?班级人数和就餐人数相差几个就应该有几个人的名字才对。麻烦了!
我是这样写的,比较繁琐,我是英文盲,所以定义的名称都是中文。
=LET(信息表,信息表!A2:C894,订单表,TRIMRANGE(订单表!A2:L99999),学生午餐信息,CHOOSECOLS(FILTER(订单表,(CHOOSECOLS(订单表,4)="学生")*(CHOOSECOLS(订单表,12)="午餐")),1,2,3,6),学生身份证,CHOOSECOLS(学生午餐信息,2),就餐学生班级,XLOOKUP(学生身份证,CHOOSECOLS(信息表,2),CHOOSECOLS(信息表,3),,0),日期,TEXT(CHOOSECOLS(学生午餐信息,1),"m月d日"),就餐统计表,DROP(GROUPBY(HSTACK(日期,就餐学生班级),HSTACK(CHOOSECOLS(学生午餐信息,3),CHOOSECOLS(学生午餐信息,4)*1),HSTACK(COUNTA,SUM),0,0,2),1),班级人数表,GROUPBY(信息表!C2:C894,信息表!B2:B894,COUNTA,0,0,1),查找班级人数,XLOOKUP(CHOOSECOLS(就餐统计表,2),CHOOSECOLS(班级人数表,1),CHOOSECOLS(班级人数表,2),,0),HSTACK(CHOOSECOLS(就餐统计表,1,2),查找班级人数,CHOOSECOLS(就餐统计表,3,4)))

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-6-8 21:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一杯绿茶来了 发表于 2025-6-8 20:40
=IF(D2,IFERROR(TEXTJOIN(",",,TEXT(A2,"m-d")&":"&LET(s,FILTER(信息表!$A$2:$A$894,信息表!$C$2:$C$894= ...

这个未就餐名单公式准确无误,我一下子没反应过来,有时间了好好研究,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-6-9 17:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=LET(信息表,信息表!A2:C894,订单表,TRIMRANGE(订单表!A2:L99999),学生午餐订单表,FILTER(订单表,(INDEX(订单表,,4)="学生")*(INDEX(订单表,,12)="午餐")),必须订单,CHOOSECOLS(学生午餐订单表,1,2,3,6),就餐学生身份证,INDEX(必须订单,,2),订单班级,XLOOKUP(就餐学生身份证,INDEX(信息表,,2),INDEX(信息表,,3),,0),就餐日期,TEXT(INDEX(必须订单,,1),"m月d日"),学生午餐明细,HSTACK(就餐日期,就餐学生身份证,INDEX(必须订单,,3),订单班级),订单透视表,DROP(GROUPBY(HSTACK(就餐日期,订单班级),HSTACK(INDEX(必须订单,,3),INDEX(必须订单,,4)*1),HSTACK(COUNTA,SUM),0,0,2),1),应到人数,GROUPBY(INDEX(信息表,,3),INDEX(信息表,,2),COUNTA,0,0,1),当日当班应到人数,XLOOKUP(INDEX(订单透视表,,2),INDEX(应到人数,,1),INDEX(应到人数,,2),,0),最终表,HSTACK(INDEX(订单透视表,,1),INDEX(订单透视表,,2),当日当班应到人数,INDEX(订单透视表,,3),INDEX(订单透视表,,4)),未就餐名单,BYROW(最终表,LAMBDA(行,LET(当前日期,INDEX(行,1),当前班级,INDEX(行,2),班级所有学生,FILTER(CHOOSECOLS(信息表,1,2),INDEX(信息表,,3)=当前班级),已就餐学生,FILTER(INDEX(学生午餐明细,,3),(INDEX(学生午餐明细,,1)=当前日期)*(INDEX(学生午餐明细,,4)=当前班级)),未就餐学生,FILTER(INDEX(班级所有学生,,1),NOT(ISNUMBER(XMATCH(INDEX(班级所有学生,,1),已就餐学生)))),名单文本,当前日期&":"&未就餐学生,TEXTJOIN("、",TRUE,名单文本)))),IFERROR(HSTACK(最终表,未就餐名单),""))已经符合需求,如果要能在进行优化性能,简化公式就好了,自定义名称还是用中文好,我一个英语盲才能看懂。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-25 02:54 , Processed in 0.017028 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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