ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何通过流水账,得到这种统计表格

[复制链接]

TA的精华主题

TA的得分主题

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

更想请教一下列位,有没有更好的展示形式呢?请教请教


家里亲戚在建筑公司做财务,但是excel功底不行,很多表格数据都是靠手一个一个复制过去的,非常浪费时间,关键是容易出错



就希望能实现这么一个功能,通过记录“流水账”(也算是每日的工作能有个记录),可以实现自动汇总数据,达到如下图的效果




(流水账↑↑↑↑↑↑↑↑↑,如有必要,大佬可以指点改动的)

(期待的效果,大佬也可以变动,只要大致的功能意思能满足即可)


用“数据透视表”或者PQ,再或者其他的  都可以,表格的样式也可以改变,只要最终结果方便看就行


另外可能还需要,随时统计某家(如丙方)所有相关的数据,所有收款明细,这样的。


不知道说的是不是清楚,如有表达不清,大佬们随时提哈




需求示例.rar

13.18 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2024-11-7 19:53 | 显示全部楼层
用透视表函数能做成这样,做成你的样子估计得VBA。
  1. =LET(t,PIVOTBY(HSTACK(B2:B29,A2:A29,D2:D29),HSTACK(HSTACK(MATCH(C2:C29,{"总包","分包","采购"},),C2:C29),HSTACK(MATCH(E2:E29,{"公司名称","合同金额","开票","收款"},),E2:E29),E2:E29),1*F2:F29,SUM,0,2,,1),VSTACK(CHOOSEROWS(t,{2,4}),DROP(t,5)))
复制代码
微信图片_20241107195319.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 20:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Python+Pandas:
df = pd.read_excel('pandas exercise/sample561.xlsx')
df1 = df.pivot_table(index=['项目名称', '日期'], columns=['公司类型', '公司名称', '事项'], aggfunc='sum', fill_value=0, margins=True)
df1 = df1.droplevel(0, axis=1)
idx = pd.IndexSlice
df1 = df1.loc[:, idx[['总包', '分包', '采购'], ['甲方', '乙方', '丙方', '丁方'], ['合同金额', '开票', '收款', '付款']]]

writer = pd.ExcelWriter('pandas exercise/sample561.xlsx', engine='openpyxl', mode='a', if_sheet_exists='overlay')
df1.to_excel(writer, '1.“流水账”', startcol=7)
writer.close()

Sample561.xlsx.zip

12.93 KB, 下载次数: 1

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 21:10 | 显示全部楼层
本帖最后由 edwin11891 于 2024-11-7 21:42 编辑

硬凑一个接近楼主需求的样式:
  1. =LET(Xa,A2:A29,Xb,B2:B29,Xc,C2:C29,Xd,D2:D29,Xe,E2:E29,Xf,F2:F29,t,PIVOTBY(HSTACK(Xb,HSTACK(MATCH(Xd,Xd,),Xd),Xa,Xc),HSTACK(HSTACK(MATCH(Xc,{"总包","分包","采购"},),Xc),HSTACK(MATCH(Xe,{"公司名称","合同金额","开票","收款"},),Xe),Xe),1*Xf,SUM,0,2,1,0),Res,VSTACK(CHOOSEROWS(t,{2,4}),DROP(t,5)),SI,VSTACK("项目",DROP(TAKE(Res,,1),1)),b,CHOOSECOLS(Res,3),sDay,VSTACK("日期",DROP(CHOOSECOLS(Res,4),1)),sType,CHOOSECOLS(Res,5),c,CHOOSECOLS(Res,{6,7,8}),d,CHOOSECOLS(Res,{9,10,11}),e,CHOOSECOLS(Res,{12,13,14}),Sz,VSTACK("总包","公司名称",DROP(IF(sType="总包",b,""),2)),Sf,VSTACK("分包","公司名称",DROP(IF(sType="分包",b,""),2)),Sc,VSTACK("采购","公司名称",DROP(IF(sType="采购",b,""),2)),sFinal,HSTACK(SI,sDay,Sz,c,Sf,d,Sc,e),sFinal)
复制代码
微信图片_20241107213112.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 22:50 | 显示全部楼层
再来个超长火车,基本实现楼主的想法。目前只是实现目标,没有优化。
  1. =LET(Xa,A2:A29,Xb,B2:B29,Xc,C2:C29,Xd,D2:D29,Xe,E2:E29,Xf,F2:F29,t,DROP(PIVOTBY(HSTACK(HSTACK(MATCH(Xb&Xd,Xb&Xd,),Xb&Xd),Xb,Xd,Xa,Xc),HSTACK(HSTACK(MATCH(Xc,{"总包","分包","采购"},),Xc),HSTACK(MATCH(Xe,{"公司名称","合同金额","开票","收款"},),Xe),Xe),1*Xf,SUM,0,2,1,0),,2),Res,VSTACK(CHOOSEROWS(t,{2,4}),DROP(t,5)),SI,VSTACK("项目",DROP(TAKE(Res,,1),1)),b,CHOOSECOLS(Res,2),sDay,VSTACK("日期",DROP(CHOOSECOLS(Res,3),1)),sType,CHOOSECOLS(Res,4),c,CHOOSECOLS(Res,{5,6,7}),d,CHOOSECOLS(Res,{8,9,10}),e,CHOOSECOLS(Res,{11,12,13}),Sz,VSTACK("总包","公司名称",DROP(IF(sType="总包",b,""),2)),Sf,VSTACK("分包","公司名称",DROP(IF(sType="分包",b,""),2)),Sc,VSTACK("采购","公司名称",DROP(IF(sType="采购",b,""),2)),sSI,MAP(SEQUENCE(ROWS(SI)),LAMBDA(x,IF(x<3,INDEX(SI,x),IF(x=ROWS(SI),"汇总",IF(INDEX(SI,x)="",INDEX(SI,x-1),INDEX(SI,x)))))),sSz,MAP(SEQUENCE(ROWS(Sz)),LAMBDA(x,IF(x<4,INDEX(Sz,x),IF(INDEX(Sz,x)<>"",INDEX(Sz,x),IF(INDEX(Sz,x-1)<>"",INDEX(Sz,x-1)&"_小计",""))))),sSf,MAP(SEQUENCE(ROWS(Sf)),LAMBDA(x,IF(x<4,INDEX(Sf,x),IF(INDEX(Sf,x)<>"",INDEX(Sf,x),IF(INDEX(Sf,x-1)<>"",INDEX(Sf,x-1)&"_小计",""))))),sSc,MAP(SEQUENCE(ROWS(Sc)),LAMBDA(x,IF(x<4,INDEX(Sc,x),IF(INDEX(Sc,x)<>"",INDEX(Sc,x),IF(INDEX(Sc,x-1)<>"",INDEX(Sc,x-1)&"_小计",""))))),sFinal,HSTACK(sSI,sDay,sSz,c,sSf,d,sSc,e),sFinal)
复制代码
微信图片_20241107224912.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 23:44 | 显示全部楼层
我是进来看各位老师的大砍刀的~~~~~~

=======================
学到了在 PIVOTBY 里如何做 双层 的 列标题,  HSTACK(HSTACK(     简单粗暴啊

谢谢各位老师

TA的精华主题

TA的得分主题

发表于 2024-11-8 09:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个要么vba要么开火车,最好做表的时候做成你最终的表,第一张由目标表生成

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-8 10:40 | 显示全部楼层
edwin11891 发表于 2024-11-7 19:53
用透视表函数能做成这样,做成你的样子估计得VBA。

您好,图片中做出的透视表可以发一下吗?我做出来总是顺序不如意,想向您学习一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-8 10:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ericxzhou 发表于 2024-11-7 20:42
Python+Pandas:
df = pd.read_excel('pandas exercise/sample561.xlsx')
df1 = df.pivot_table(index=[' ...

这个是需要安装python吧,这个做好后,每次目标表会自动更新吗?还是需要重新运行一次?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-8 10:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
edwin11891 发表于 2024-11-7 21:10
硬凑一个接近楼主需求的样式:

好厉害,这样做好后,重复的单元格可以合并吗?主要是为了方便看
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 20:07 , Processed in 0.043888 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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