Excel精英培训网

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

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

[复制链接]
发表于 2016-4-6 17:34 | 显示全部楼层 |阅读模式
日期作为变量,按照区间提取数据,具体见附件
最佳答案
2016-4-15 15:32
注意:源数据的表头中不要有换行符,不然查询内容无法匹配
  1. Sub 查询()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     cx = "品名,规格,批号,投料量,单价,半成品数量,半成品收率,成品数量,成品收率,成品定额,定额数量,节超数量,节约金额,杂质,灰屑,质量情况,备注"
  4.     cxrr = Split(cx, ",")
  5.     arr = Sheets("数据统计2016").[a1].CurrentRegion
  6.     ReDim brr(1 To UBound(arr), 1 To UBound(cxrr) + 1)
  7.     For j = 1 To UBound(arr, 2)      '表头与列号挂钩
  8.         d(arr(1, j)) = j
  9.     Next
  10.     For j = 0 To UBound(cxrr)     '查询内容与源表列号挂钩
  11.         cxrr(j) = d(cxrr(j))
  12.     Next
  13.    
  14.     rq1 = [b3]: rq2 = [c3]
  15.     For i = 1 To UBound(arr)
  16.         rq = arr(i, 15)
  17.         If rq >= rq1 And rq <= rq2 Then
  18.             n = n + 1
  19.             For j = 1 To UBound(brr, 2)
  20.                 brr(n, j) = arr(i, cxrr(j - 1))
  21.             Next
  22.         End If
  23.     Next
  24.     [a8:z1000] = ""
  25.     [a8].Resize(1, UBound(brr, 2)) = Split(cx, ",")
  26.     [a9].Resize(n, UBound(brr, 2)) = brr
  27. End Sub
复制代码

2016年生产数据02.rar

39.18 KB, 下载次数: 25

 楼主| 发表于 2016-4-14 17:08 | 显示全部楼层
顶一下,沉到底了都。求大咖关注,难道是太简单?
回复

使用道具 举报

发表于 2016-4-15 15:32 | 显示全部楼层    本楼为最佳答案   
注意:源数据的表头中不要有换行符,不然查询内容无法匹配
  1. Sub 查询()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     cx = "品名,规格,批号,投料量,单价,半成品数量,半成品收率,成品数量,成品收率,成品定额,定额数量,节超数量,节约金额,杂质,灰屑,质量情况,备注"
  4.     cxrr = Split(cx, ",")
  5.     arr = Sheets("数据统计2016").[a1].CurrentRegion
  6.     ReDim brr(1 To UBound(arr), 1 To UBound(cxrr) + 1)
  7.     For j = 1 To UBound(arr, 2)      '表头与列号挂钩
  8.         d(arr(1, j)) = j
  9.     Next
  10.     For j = 0 To UBound(cxrr)     '查询内容与源表列号挂钩
  11.         cxrr(j) = d(cxrr(j))
  12.     Next
  13.    
  14.     rq1 = [b3]: rq2 = [c3]
  15.     For i = 1 To UBound(arr)
  16.         rq = arr(i, 15)
  17.         If rq >= rq1 And rq <= rq2 Then
  18.             n = n + 1
  19.             For j = 1 To UBound(brr, 2)
  20.                 brr(n, j) = arr(i, cxrr(j - 1))
  21.             Next
  22.         End If
  23.     Next
  24.     [a8:z1000] = ""
  25.     [a8].Resize(1, UBound(brr, 2)) = Split(cx, ",")
  26.     [a9].Resize(n, UBound(brr, 2)) = brr
  27. End Sub
复制代码

2016年生产数据02.rar

42.16 KB, 下载次数: 14

回复

使用道具 举报

发表于 2016-4-15 21:15 | 显示全部楼层
学习了!!
回复

使用道具 举报

 楼主| 发表于 2016-4-16 22:17 | 显示全部楼层
本帖最后由 罗达 于 2016-4-16 22:47 编辑
grf1973 发表于 2016-4-15 15:32
注意:源数据的表头中不要有换行符,不然查询内容无法匹配


很感谢你的帮助!和我想的一样。如果有换行符,“投料时间”在代码里写成“投料_时间”行吗?就是SQL查询的表示方法在这里不行吗
回复

使用道具 举报

 楼主| 发表于 2016-4-16 22:46 | 显示全部楼层
grf1973 发表于 2016-4-15 15:32
注意:源数据的表头中不要有换行符,不然查询内容无法匹配

代码我改好了,谢谢,你是最佳
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:32 , Processed in 0.479768 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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