ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 达人们,想要个更自动的公式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-7 09:10 | 显示全部楼层 |阅读模式
一个财务上科目重分类的问题

自己用sumifs是可以解决的,但是遇到数据量大,且表格经常替换的情况下,自己手工去筛选科目+客户后,再用公式就非常麻烦

有没有更自动的公式,贴完基础数据后,在新表格制定区域自动把这些数据整出来

比如LAMD等这些函数

亦或者直接上VBA

详细在附件

book1.rar

13.1 KB, 下载次数: 29

TA的精华主题

TA的得分主题

发表于 2024-11-7 09:33 | 显示全部楼层
供参考
image.png

book1.rar

24.41 KB, 下载次数: 2

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-7 09:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
写的不好,开个火车;

一步到位的,写到 数据区域1000行;M365应该可以用

=LET(a,GROUPBY(HSTACK(B2:B1000,G2:G1000),HSTACK(O2:O1000,P2:P1000),SUM,,0,-1,G2:G1000<>""),b,CHOOSECOLS(a,1,2),c,CHOOSECOLS(a,3),d,CHOOSECOLS(a,4),cc,IF(c-d>0,c-d,0),dd,IF(d-c>0,d-c,0),VSTACK(HSTACK(b,cc,dd),HSTACK({"","合计:"},SUM(cc),SUM(dd))))





期未借贷.png

TA的精华主题

TA的得分主题

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

我再请教下,把这个执行结果放到另外一个页签(另外一个工作表,不是另外一个文件)怎么改vba

TA的精华主题

TA的得分主题

发表于 2024-11-7 10:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
662092ww 发表于 2024-11-7 10:00
我再请教下,把这个执行结果放到另外一个页签(另外一个工作表,不是另外一个文件)怎么改vba

image.png

book1.rar

25.3 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2024-11-7 10:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把客户插到一级科目后,直接一个groupby轻松解决,而且计算量小

TA的精华主题

TA的得分主题

发表于 2024-11-7 10:59 | 显示全部楼层
=DROP(LET(a,UNIQUE(HSTACK(B3:B58,G3:G58)),REDUCE(1,TAKE(a,,1)&TAKE(a,,-1),LAMBDA(x,y,LET(b,BYCOL(FILTER(O3:P58,B3:B58&G3:G58=y),SUM),c,TAKE(b,,1)-TAKE(b,,-1),VSTACK(x,IF(c>0,HSTACK(c,TAKE(b,,-1)),HSTACK("- ("&c&") ",TAKE(b,,-1)))))))),1)
写的不好
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-7 11:26 | 显示全部楼层

兄弟 你是个懂的,我想参照你的继续编一下,编辑不下去了

还多了个步骤,根据计算结果

如果应收账款的贷方余额,要将科目改为 预收款项

如果是其他应收款的贷方余额要将科目改成 其他应付款

如果是其他应付款的借方余额,科目要改成 其他应收款

如果是应付账款的借方余额,科目要改成 预付款项

如果是预付款项的贷方余额,科目要改成 应付账款


帮忙帮到底吧

详细在附件里

book2.rar

25.79 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-11-7 12:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lanjian229 于 2024-11-7 12:20 编辑

LET(z,VSTACK(R2:U2,LET(q,GROUPBY(HSTACK(B2:B999,G2:G999),O2:P999,SUM,1,0),s,TAKE(q,,-2),l,BYROW(s*{1,-1},SUM),HSTACK(TAKE(q,,2),l*(l>0),-l*(l<0)))),GROUPBY(TAKE(z,,2),TAKE(z,,-2),SUM,3,1))
因有第一行说明,没选全列 image.jpg

TA的精华主题

TA的得分主题

发表于 2024-11-7 12:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用groupby,一个公式完成
=VSTACK(HSTACK("一级
名称","客户","期末借方","期末贷方"),DROP(GROUPBY(HSTACK(B2:B9999,G2:G9999),O2:O9999-P2:P9999,HSTACK(LAMBDA(x,(SUM(x)>0)*SUM(x)),LAMBDA(x,-(SUM(x)<0)*SUM(x))),1,0,-1,B2:B9999<>""),1))
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 19:40 , Processed in 0.041634 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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