ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何在一列日期数据中提取每个月的最后期记录?

如何在一列日期数据中提取每个月的最后期记录?

作者:绿色风 分类: 时间:2022-08-17 浏览:164
楼主
liuguansky
Q:如何在一列日期数据中提取每个月的最后期记录?[假设日期数据为乱序排列]
A:用如下代码可以实现:
  1. Sub justtest()
  2.   Dim dic, arr, i&, str1$, str2$, str3, arrt, arrre, j&
  3.   Set dic = CreateObject("scripting.dictionary")
  4.   arr = Cells(1, 1).CurrentRegion
  5.   For i = 2 To UBound(arr, 1)
  6.     str1 = Format(arr(i, 3), "yyyy-m")
  7.     str2 = Format(arr(i, 3), "d")
  8.     str3 = arr(i, 1) & vbTab & arr(i, 2) & vbTab & arr(i, 3)
  9.     If dic.exists(str1) Then
  10.       If Val(Format(Split(dic(str1), vbTab)(2), "d")) <= Val(str2) Then
  11.         dic(str1) = str3
  12.       End If
  13.       Else: dic.Add str1, str3
  14.     End If
  15.   Next i
  16.   Range("e:g").Clear
  17.   Cells(1, "e").Resize(1, 3) = Application.Index(arr, 1)
  18.   If dic.Count > 0 Then
  19.     arrt = dic.items
  20.     ReDim arrre(1 To dic.Count, 1 To 3)
  21.     For i = 1 To dic.Count
  22.       For j = 1 To 3
  23.         arrre(i, j) = Split(arrt(i - 1), vbTab)(j - 1)
  24.     Next j, i
  25.     Cells(2, "e").Resize(i - 1, 3) = arrre
  26.   End If
  27.   Set dic = Nothing
  28. End Sub
2楼
wqfzqgk
  1. Sub ddddd()
  2. Set d = CreateObject("scripting.dictionary")
  3. arr = Range("a210:c2")
  4. For i = 1 To 209
  5. d(Split(arr(i, 3), "/")(0) & Split(arr(i, 3), "/")(1)) = arr(i, 1) & "%" & arr(i, 2) & "%" & arr(i, 3)
  6. Next
  7. Range("h2").Resize(d.Count, 1) = Application.WorksheetFunction.Transpose(d.items)
  8. Application.DisplayAlerts = False
  9. Range("h:h").TextToColumns other:=True, otherchar:="%"
  10. Application.DisplayAlerts = True
  11. End Sub
有个小缺点,和上面的程序一样,如果有相同的最大日期的话,只能提一个,呵呵,对了我这个忘了一开始排序啦,不然的话,乱序就不对,只是一句代码

免责声明

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

评论列表
sitemap