Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2320|回复: 7

[已解决]几个表汇总

[复制链接]
发表于 2016-3-22 10:10 | 显示全部楼层 |阅读模式
本帖最后由 c6770459 于 2016-3-23 10:08 编辑

QQ图片20160322095727.png 比较简单的一个表,前面是每个月的登记。汇总表里,扣款日期把每个月对应名字的扣款日期汇总在对应的框里,扣款金额就做一个合计,现金罚款也同理。 QQ图片20160322100119.png 比如说陈飞,在1月和2月都有扣款,汇总行就显示这样。
最后再强调一点,月份会累积上去,请大神做好VBA后备注一下,以后月份增加上去后,怎么改才会把增加的月份累积上去
最佳答案
2016-3-22 14:36
  1. Sub 汇总()
  2.     Dim sh As Worksheet
  3.     Set d = CreateObject("scripting.dictionary")
  4.     Set d1 = CreateObject("scripting.dictionary")
  5.     Set d2 = CreateObject("scripting.dictionary")
  6.     For Each sh In Worksheets
  7.         arr = sh.Range("c3:f" & sh.[c65536].End(3).Row)
  8.         If sh.Name <> ActiveSheet.Name Then
  9.             For i = 1 To UBound(arr)
  10.                 x = arr(i, 1)
  11.                 If arr(i, 2) <> "" Then d(x) = d(x) & Chr(10) & arr(i, 2)
  12.                 If arr(i, 3) > 0 Then d1(x) = d1(x) + arr(i, 3)
  13.                 If arr(i, 4) > 0 Then d2(x) = d2(x) + arr(i, 4)
  14.             Next
  15.         Else
  16.             For i = 1 To UBound(arr)
  17.                 x = arr(i, 1)
  18.                 arr(i, 2) = Mid(d(x), 2)
  19.                 arr(i, 3) = d1(x)
  20.                 arr(i, 4) = d2(x)
  21.             Next
  22.             sh.Range("c3:f" & sh.[c65536].End(3).Row) = arr
  23.         End If
  24.     Next
  25. End Sub
复制代码

钉钉签到扣款情况.rar

10.79 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-3-22 10:39 | 显示全部楼层
回复

使用道具 举报

发表于 2016-3-22 10:41 | 显示全部楼层
我只想说:一个非常简单的事情,被你搞的异常复杂。建议你看看小妖老师的改变旧习惯吧,先把你原始的表弄简单了,汇总就秒秒钟的事。。先去掉合并单元格,然后日期合法化
回复

使用道具 举报

发表于 2016-3-22 14:36 | 显示全部楼层    本楼为最佳答案   
  1. Sub 汇总()
  2.     Dim sh As Worksheet
  3.     Set d = CreateObject("scripting.dictionary")
  4.     Set d1 = CreateObject("scripting.dictionary")
  5.     Set d2 = CreateObject("scripting.dictionary")
  6.     For Each sh In Worksheets
  7.         arr = sh.Range("c3:f" & sh.[c65536].End(3).Row)
  8.         If sh.Name <> ActiveSheet.Name Then
  9.             For i = 1 To UBound(arr)
  10.                 x = arr(i, 1)
  11.                 If arr(i, 2) <> "" Then d(x) = d(x) & Chr(10) & arr(i, 2)
  12.                 If arr(i, 3) > 0 Then d1(x) = d1(x) + arr(i, 3)
  13.                 If arr(i, 4) > 0 Then d2(x) = d2(x) + arr(i, 4)
  14.             Next
  15.         Else
  16.             For i = 1 To UBound(arr)
  17.                 x = arr(i, 1)
  18.                 arr(i, 2) = Mid(d(x), 2)
  19.                 arr(i, 3) = d1(x)
  20.                 arr(i, 4) = d2(x)
  21.             Next
  22.             sh.Range("c3:f" & sh.[c65536].End(3).Row) = arr
  23.         End If
  24.     Next
  25. End Sub
复制代码
回复

使用道具 举报

发表于 2016-3-22 14:37 | 显示全部楼层
请看附件。

钉钉签到扣款情况.rar

17.63 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2016-3-22 17:32 | 显示全部楼层
grf1973 发表于 2016-3-22 14:37
请看附件。

大神你好,假如我加上几个月的话,,还是会自动汇总的吗?
回复

使用道具 举报

发表于 2016-3-22 20:32 | 显示全部楼层
会的,但是要保证汇总表是最后一张表
回复

使用道具 举报

 楼主| 发表于 2016-3-23 10:07 | 显示全部楼层
grf1973 发表于 2016-3-22 20:32
会的,但是要保证汇总表是最后一张表

明白了,,谢谢!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-8 10:44 , Processed in 0.230543 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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