ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 对于有合并单元格的数量和金额统计,不能兼得。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-17 14:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ourvip 于 2024-10-17 17:29 编辑

需求:在统计报表中,只要选择时间,统计出原始数据的各种信息

要分别统计每个项目数量,每种支付方式分别有多少,如果没有合并单元格的情况,这个统计就是准确的;

目前遇到的问题是有合并单元格的就没法统计准确;
一个项目如果有混合支付,只能在支付方式这列用多行,其他列合并单元格;
但是又会造成统计的时候,多种支付方式的第二种及以上的金额都统计不出来

如果把时间,项目不合并,可以统计出每种支付方式各有多少,但是又会造成统计数量的时候多统计

开始可能我没有说清楚我的需求,造成误会,我再补充一下。
1、对于单一支付方式目前没有问题;
2、主要是同一个项目有混合支付方式的这种(有单元格合并的,为了醒目标记了颜色,也就是4号和8号),不仅要统计出该项目数量,还要统计出每种付款方式的具体金额。
比如10月8日这个情况,项目A的数量统计是2个,项目C的数量统计是1个,是对;
但是支付方式统计金额,因为用了合并单元格的原因,就有一些没有统计出来,需要把这些没有统计出来的统计出来。


111.png








工作簿1.zip

10.63 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2024-10-17 14:42 | 显示全部楼层
  1. =LET(_x,TRANSPOSE(SCAN(,TRANSPOSE(A3:E19),LAMBDA(_a,_b,IF(_b=0,_a,_b)))),PIVOTBY(INDEX(_x,,3),INDEX(_x,,4),INDEX(_x,,5),SUM,,0,,0,,INDEX(_x,,1)=H2))
复制代码
屏幕截图 2024-10-17 144039.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-17 15:38 | 显示全部楼层
=LET(a,SCAN(,$C$3:$C$19,LAMBDA(x,y,IF(y="",x,y))),b,SCAN(,$A$3:$A$19,LAMBDA(x,y,IF(y="",x,y))),c,SUM((b=$H$2)*(a=$I3)),d,SUM((b=$H$2)*(a=$I3)*($D$3:$D$19=J$2)*$E$3:$E$19),IF(J$2="数量",c,d))

TA的精华主题

TA的得分主题

发表于 2024-10-17 15:48 | 显示全部楼层
  1. =LET(a,SCAN("",A3:A19,LAMBDA(r,t,IF(t="",r,t))),b,SCAN("",C3:C19,LAMBDA(q,w,IF(w="",q,w))),c,UNIQUE(b),REDUCE(I2:N2,c,LAMBDA(x,y,LET(s,(a=H2)*(b=y),d,IFERROR(ROWS(FILTER(a,s)),0),e,DROP(REDUCE("",K2:N2,LAMBDA(m,n,HSTACK(m,IFERROR(SUM(FILTER(E3:E19,s*(D3:D19=n))),0)))),,1),VSTACK(x,HSTACK(y,d,e))))))
复制代码

用双循环堆叠
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-17 16:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢,我虽然没用你的成功出来数据,但是从图片中能看出,没有数量,为0的项被省略了,这个不是我要的最后情况,报表总的还是需要有项目  数量 和支付方式,哪怕是为0,都要在上面;

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-17 16:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mykitami 发表于 2024-10-17 15:38
=LET(a,SCAN(,$C$3:$C$19,LAMBDA(x,y,IF(y="",x,y))),b,SCAN(,$A$3:$A$19,LAMBDA(x,y,IF(y="",x,y))),c,SUM ...

感谢你的回复,你这个出来的数量也是我之前提到的重复了(比如10月4日,数量显示的就是2);支付方式能全部出来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-17 16:35 | 显示全部楼层

感谢大佬,你的这个也是数量重复了,你看8号的数量应该都是1,你这里都重复了。

TA的精华主题

TA的得分主题

发表于 2024-10-17 16:42 | 显示全部楼层
本帖最后由 hxj119 于 2024-10-17 16:47 编辑
ourvip 发表于 2024-10-17 16:35
感谢大佬,你的这个也是数量重复了,你看8号的数量应该都是1,你这里都重复了。

你自己描述里面都没有说清楚数量的计算方式,有2笔,我计数2,不对?

1729155407280.png

TA的精华主题

TA的得分主题

发表于 2024-10-17 16:43 | 显示全部楼层
将0不显示:
  1. =LET(sRc,TRANSPOSE(SCAN(,TRANSPOSE(A3:E19),LAMBDA(a,b,IF(b=0,a,b)))),a,PIVOTBY(INDEX(sRc,,3),INDEX(sRc,,4),INDEX(sRc,,5)*(INDEX(sRc,,1)=H2),SUM,,0,,0),b,IF(a=0,"",a),c,BYROW(CHOOSECOLS(DROP(b,1),SEQUENCE(,COLUMNS(b)-1,2)),COUNT),d,HSTACK(TAKE(b,,1),VSTACK("数量",c),DROP(b,,1)),d)
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-17 16:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ourvip 于 2024-10-17 16:55 编辑
hxj119 发表于 2024-10-17 16:42
你自己描述里面都没有说清楚数量的计算方式,有2笔,我计数2,不对?

可能是我没有描述清楚,同一个客户对应的项目,是混合支付,需要找出这一个项目,对应每项支付方式的金额,统计的该项目数量就是1,你看下图的8号的示例
微信截图_20241017164804.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 20:54 , Processed in 0.045150 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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