Excel精英培训网

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

[已解决]VBA按日期提取数据

[复制链接]
发表于 2013-3-8 13:13 | 显示全部楼层 |阅读模式
按日期要求将分表中的数据提取到总表的对应月份。谢谢了。 VBA数据提取.rar (24.49 KB, 下载次数: 73)
 楼主| 发表于 2013-3-8 18:55 | 显示全部楼层
下标=上界-下界+1   是不是A列中有合并单元格的原因?哪位高手看一下。
回复

使用道具 举报

发表于 2013-3-9 12:29 | 显示全部楼层
回复

使用道具 举报

发表于 2013-3-9 12:42 | 显示全部楼层
表做得极不合理。
明细表中的日期明明是某一天的日期的,你给整来个按月显示。
回复

使用道具 举报

发表于 2013-3-9 13:14 | 显示全部楼层
代码放在汇总工作表模块内
  1. Sub 汇总数据()
  2.    
  3.     If Len([a3]) = 0 Then MsgBox "A3单元格输入要查询的年份", vbCritical + vbOKOnly: Exit Sub
  4.    
  5.     On Error Resume Next
  6.     If Not IsDate(DateSerial([a3], 1, 1)) Then MsgBox "A3单元格输入要查询的年份", vbCritical + vbOKOnly: Exit Sub
  7.     On Error GoTo 0

  8.     Dim cYear As String
  9.     cYear = [a3] & "年"

  10.     Dim arr, arrb()
  11.     Dim iLastRow As Byte

  12.     iLastRow = Cells(Rows.Count, 1).End(xlUp).Row - 1

  13.     arr = Range("a4:e" & iLastRow)
  14.     ReDim arrb(1 To UBound(arr))

  15.     Dim i As Byte
  16.     Dim rg As Range
  17.     Dim arrEmpty(1 To 4)
  18.    
  19.     Application.ScreenUpdating = False
  20.     With Worksheets("明细")
  21.         On Error Resume Next
  22.         For i = LBound(arr) To UBound(arr)
  23.             Set rg = .Range("a:a").Find(what:=cYear & arr(i, 1), LookIn:=xlValues, lookat:=xlWhole)
  24.             If Not rg Is Nothing Then
  25.                 arrb(i) = rg.Offset(, 1).Offset(2, 1).Resize(, 4).Value
  26.             Else
  27.                 arrb(i) = arrEmpty
  28.             End If
  29.             Set rg = Nothing
  30.         Next
  31.     End With

  32.     arrb = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arrb))
  33.     Range("b4").Resize(UBound(arrb), UBound(arrb, 2)) = arrb
  34.    
  35.     Application.ScreenUpdating = True
  36.     MsgBox "汇总完成", vbInformation + vbOKOnly
  37. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-3-9 16:09 | 显示全部楼层
hwc2ycy 发表于 2013-3-9 12:42
表做得极不合理。
明细表中的日期明明是某一天的日期的,你给整来个按月显示。

因为日期是随便输入的,而数据是这个月的,所以把它来了个按月显示。谢谢班长,代码很好。
回复

使用道具 举报

发表于 2013-3-9 16:27 | 显示全部楼层    本楼为最佳答案   
既然好了,那就给个最佳,
回复

使用道具 举报

 楼主| 发表于 2013-3-9 22:36 | 显示全部楼层
班长:对不起,最佳是您的5楼,点错了,希望版主调整一下。谢谢班长。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 13:48 , Processed in 0.318468 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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