Excel精英培训网

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

[已解决]跪求;修改完善代码。达到我的目的就可以!谢谢!

[复制链接]
发表于 2016-1-12 15:09 | 显示全部楼层 |阅读模式

求助:1、在D2单元格选择相应日期后表格第6行(累计发生数)只显示当年度累计发生数!同时第4行全年预算数显示相应年度数据
       2、在D2单元格增加一个所有年度统计有效性(比如2015-2017),选择后表格第6行(累计发生数)显示所有年度累计发生数!同时第4行全年预算数显示所有年度数据,以及清空第5行本月发生数
       第一个数据列表和第二个数据列表都是动态日期的。
请修改代码!
       以上第一条完成就万分感激!第2条完成就更完美了!谢谢
最佳答案
2016-1-12 16:42
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim xrng As Range
  3.     If Target.Address <> [d2].Address Then Exit Sub
  4.     Dim brr(1 To 2, 1 To 6)
  5.     r1 = Range("a:a").Find("汇总", , , , , xlNext).Row     '上一张表的汇总行
  6.     r2 = Range("a:a").Find("汇总", , , , , xlPrevious).Row        '下一张表的汇总行
  7.     rq = Target    '给定日期
  8.     If rq = "全部" Then
  9.         [b4].Resize(1, 6).Value = Cells(r2, 2).Resize(1, 6).Value
  10.         [b5].Resize(1, 6).Value = ""
  11.         [b6].Resize(1, 6).Value = Cells(r1, 2).Resize(1, 6).Value
  12.     Else
  13.         arr = Range("a8:g" & r1 - 1)
  14.         nd = Year(rq)    '年度
  15.         For i = 1 To UBound(arr)
  16.             xrq = arr(i, 1) '日期
  17.             If xrq <= rq And nd = Year(xrq) Then    '同年累计
  18.                 For j = 1 To 6
  19.                     brr(2, j) = brr(2, j) + arr(i, j + 1)
  20.                     If rq = xrq Then brr(1, j) = arr(i, j + 1)    '本月数
  21.                 Next
  22.             End If
  23.         Next
  24.         Range("b5:g6") = brr
  25.         Set xrng = Range("a:a").Find(nd, , , lookat:=xlWhole)    '全年预算
  26.         If Not xrng Is Nothing Then [b4].Resize(1, 6).Value = Cells(xrng.Row, 2).Resize(1, 6).Value
  27.     End If
  28. End Sub
复制代码

三公经费统计表.rar

11.24 KB, 下载次数: 9

修改代码

发表于 2016-1-12 16:30 | 显示全部楼层
QQ截图20160112162227.jpg
三公经费统计表2.rar (14.59 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2016-1-12 16:42 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim xrng As Range
  3.     If Target.Address <> [d2].Address Then Exit Sub
  4.     Dim brr(1 To 2, 1 To 6)
  5.     r1 = Range("a:a").Find("汇总", , , , , xlNext).Row     '上一张表的汇总行
  6.     r2 = Range("a:a").Find("汇总", , , , , xlPrevious).Row        '下一张表的汇总行
  7.     rq = Target    '给定日期
  8.     If rq = "全部" Then
  9.         [b4].Resize(1, 6).Value = Cells(r2, 2).Resize(1, 6).Value
  10.         [b5].Resize(1, 6).Value = ""
  11.         [b6].Resize(1, 6).Value = Cells(r1, 2).Resize(1, 6).Value
  12.     Else
  13.         arr = Range("a8:g" & r1 - 1)
  14.         nd = Year(rq)    '年度
  15.         For i = 1 To UBound(arr)
  16.             xrq = arr(i, 1) '日期
  17.             If xrq <= rq And nd = Year(xrq) Then    '同年累计
  18.                 For j = 1 To 6
  19.                     brr(2, j) = brr(2, j) + arr(i, j + 1)
  20.                     If rq = xrq Then brr(1, j) = arr(i, j + 1)    '本月数
  21.                 Next
  22.             End If
  23.         Next
  24.         Range("b5:g6") = brr
  25.         Set xrng = Range("a:a").Find(nd, , , lookat:=xlWhole)    '全年预算
  26.         If Not xrng Is Nothing Then [b4].Resize(1, 6).Value = Cells(xrng.Row, 2).Resize(1, 6).Value
  27.     End If
  28. End Sub
复制代码

三公经费统计表.rar

15.79 KB, 下载次数: 13

评分

参与人数 1 +3 收起 理由
feiaoli + 3 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-1-12 19:59 | 显示全部楼层
爱疯 发表于 2016-1-12 16:30
好像你是希望求出第4,第5,第6行。
第4,不理解什么意思
第5,理解对吗?

谢谢老师关心,楼下grf1973 老师的代码给我解决了问题。
回复

使用道具 举报

 楼主| 发表于 2016-1-12 20:13 | 显示全部楼层
非常感谢grf1973 老师的帮助,解决了我很大问题。同时代码和表格干净漂亮,非常喜欢非常佩服!再次感谢!

三公经费统计表.rar

15.79 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2016-3-25 18:29 | 显示全部楼层
grf1973 发表于 2016-1-12 16:42

grf1973 老师,D2单元格数据有效性没有和A列的添加一起变动呢?D2的数据有效性到了A35行向下就不显示日期了。我看老师的代码是到了1000行了,有效性看不出是哪里设置的,还请老师再给看一下,修改一下代码!万分感激!

三公经费(2013-2015)1.rar

14.8 KB, 下载次数: 6

回复

使用道具 举报

发表于 2016-3-28 09:41 | 显示全部楼层
代码不用改。你直接日期添加进去好了,有效性会加进去的。但只能添加在A列“汇总”行前,因为是通过“汇总”设置终点的。
附件中在“汇总”前加了2个月,有效性自动补足了。

三公经费(2013-2015)1.rar

17.16 KB, 下载次数: 5

评分

参与人数 1 +3 收起 理由
feiaoli + 3 很给力

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:52 , Processed in 0.415928 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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