ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用vba代码根据单元格时间区间筛选出符合条件的数据?

如何利用vba代码根据单元格时间区间筛选出符合条件的数据?

作者:绿色风 分类: 时间:2022-08-17 浏览:106
楼主
kevinchengcw
Q: 如何利用vba代码根据单元格时间区间筛选出符合条件的数据?
A: 代码如下:
  1. Sub test()
  2. Dim Arr, Arr2, Result, N&, I&
  3. With Worksheets("Down")  '将时间段区间数据装入数组
  4.     Arr = .Range("B2:D" & .Cells(.Rows.Count, 2).End(3).Row).Value
  5. End With
  6. With Worksheets("alarm")  '将筛选内容数据装入数组
  7.     Arr2 = .Range("a2:k" & .Cells(.Rows.Count, 1).End(3).Row).Value
  8. End With
  9. ReDim Result(LBound(Arr) To UBound(Arr), 1 To 1)  '重定义输出结果的数组
  10. For N = LBound(Arr) To UBound(Arr)   '循环时间段区间数据
  11.     For I = LBound(Arr2) To UBound(Arr2)  '循环筛选内容数据
  12.         If Val(Format(Arr2(I, 1), "yymmddhhmm")) >= Val(Format(Arr(N, 1), "yymmddhhmm")) And Val(Format(Arr2(I, 1), "yymmddhhmm")) <= Val(Format(Arr(N, 2), "yymmddhhmm")) Then   '将时间段内容按年月日时分的方式重组为整数进行对比,如果符合时间段区间,则
  13.         'If CDbl(Arr2(I, 1)) >= CDbl(Arr(N, 1)) And CDbl(Arr2(I, 1)) <= CDbl(Arr(N, 2)) Then  '本段直接将数据内容转换为双精度浮点数进行对比,包含秒的对比
  14.             If Result(N, 1) = "" Then  '如果结果数组对应项内无内容则写入当前筛选出的数据
  15.                 Result(N, 1) = Arr2(I, 11)
  16.             Else  '否则添加换行,写入当前筛选出的数据
  17.                 Result(N, 1) = Result(N, 1) & vbNewLine & Arr2(I, 11)
  18.             End If
  19.         End If
  20.     Next I
  21.     If Result(N, 1) = "" Then Result(N, 1) = "无"  '如果未筛选到符合的结果,则置为"无"
  22. Next N
  23. With Worksheets("down")  '向目标工作表写入结果
  24.     Application.ScreenUpdating = False  '关闭屏幕刷新,防止闪屏
  25.     .Range("e2:e" & .Rows.Count).ClearContents  '清空目标数据区
  26.     .[e2].Resize(UBound(Result)) = Result  '将结果写入目标数据区
  27.     .Columns.AutoFit  '列宽自适应
  28.     .Rows.AutoFit  '栏高自适应
  29.     Application.ScreenUpdating = True  '打开屏幕刷新
  30. End With
  31. End Sub
详见附件及素材源帖.
demo.rar
2楼
じ☆潴の︵ゞ
好帖

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap