1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 按区域对字段名称汇总--类似隔列求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-3-25 21:32 | 显示全部楼层 |阅读模式
FR列向右的列,是按第一行的时间段对相应的第2行标题进行累加(借方合计、贷方合计)。
本汇总数是公式计算的。
由于公式不能连续右拉,希望VBA解决--区域按标题名称(借方合计、贷方合计)汇总。如能绿色按键更好。
数据行数不定。
谢谢各位!

区域按第2行标题求和VBA.rar

72.23 KB, 下载次数: 24

TA的精华主题

TA的得分主题

发表于 2025-3-25 21:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
说实话,看见你这张表,我建议把做表的人换一个吧。
自己搞自己脑子。
函数都用不了表,只能手工做的,只能是废表。

TA的精华主题

TA的得分主题

发表于 2025-3-25 21:46 | 显示全部楼层
shiruiqiang 发表于 2025-3-25 21:44
说实话,看见你这张表,我建议把做表的人换一个吧。
自己搞自己脑子。
函数都用不了表,只能手工做的,只 ...

假如是1楼做的呢?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-25 21:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 shiruiqiang 于 2025-3-25 22:11 编辑

目前就vba能偷偷懒。
先把要求求和的日期split
循环第一行的列,判断是否在期内
是的话分别“借”=“借”+arr(1,y),“贷”=“贷”+arr(1,y+1)
197列
image.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-25 22:12 | 显示全部楼层
limonet 发表于 2025-3-25 21:46
假如是1楼做的呢?

报表让1楼手工做算了

好做一点,第一行插入了列号

区域按第2行标题求和VBA.rar

68.28 KB, 下载次数: 10

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-25 23:07 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-26 07:29 | 显示全部楼层
本帖最后由 jjmysjg 于 2025-3-26 07:48 编辑
shiruiqiang 发表于 2025-3-25 22:12
报表让1楼手工做算了

好做一点,第一行插入了列号

实现了,但结果不对--原因是后来发现DT、DU列是多余的列。

TA的精华主题

TA的得分主题

发表于 2025-3-26 09:43 | 显示全部楼层
jjmysjg 发表于 2025-3-26 07:29
实现了,但结果不对--原因是后来发现DT、DU列是多余的列。

所以说你这样设计表格有问题
很多统计必须手工去做

TA的精华主题

TA的得分主题

发表于 2025-3-26 12:34 | 显示全部楼层
本帖最后由 翁知江安 于 2025-3-26 12:44 编辑

Sub test()
Dim i, j, s, t, jhejijine, dhejijine
Dim ar As Variant
Dim mj As String
Dim startyear, endyear As Integer
s = Val(InputBox("请输入起始年份(格式:yyyy):   "))
t = Val(InputBox("请输入终了年份(格式:yyyy):   "))
If s > t Then
MsgBox "您输入的起止年份有误,请重新输入"
s = Val(InputBox("请输入起始年份(格式:yyyy):   "))
t = Val(InputBox("请输入终了年份(格式:yyyy):   "))
End If
mj = s & "." & "07" & "-" & t & "." & "06"
ar = Sheet1.UsedRange
For j = 174 To UBound(ar, 2) - 3 Step 4
If mj = ar(1, j) Then
  For i = 3 To UBound(ar)
   If Len(ar(i, 2)) = 3 Then
      If ar(2, j) = "借方合计" Then
      jhejijine = jhejijine + ar(i, j)
      End If
      If ar(2, j + 1) = "贷方合计" Then
      dhejijine = dhejijine + ar(i, j + 1)
      End If
    End If
Next
    Else
     startyear = Val(Mid(ar(1, j), 1, 4))
     endyear = Val(Mid(ar(1, j), 9, 4))
     If startyear >= s And endyear <= t Then
    For i = 3 To UBound(ar)
     If Len(ar(i, 2)) = 3 Then
        If ar(2, j) = "借方合计" Then
        jhejijine = jhejijine + ar(i, j)
        End If
        If ar(2, j + 1) = "贷方合计" Then
        dhejijine = dhejijine + ar(i, j + 1)
        End If
     End If
    Next
   End If
  End If
Next
MsgBox mj & "借方金额合计为" & jhejijine & "元"
MsgBox mj & "贷方金额合计为" & dhejijine & "元"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-26 12:35 | 显示全部楼层
本帖最后由 翁知江安 于 2025-3-26 14:00 编辑

将起止年份改成了动态输入,方便使用。供参考,欢迎批评指正。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-3-30 04:59 , Processed in 0.028625 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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