【问题标题】:Excel VBA - How do I find the smallest and largest keys in a dictionaryExcel VBA - 如何在字典中找到最小和最大的键
【发布时间】:2017-06-27 02:07:00
【问题描述】:

我创建了一个字典来获取唯一的日期值作为键,并带有一个整数项,如下所示:
-钥匙,物品
-4/27/2017, 1
-5/4/2017, 56
-5/31/2017, 103

我想创建一个标题,上面写着“MINDATEMAXDATE 的报告”,所以我需要能够获取最小日期和最大日期从我的字典中并将它们存储为变量。整数项不一定总是按升序排列,所以我不能使用它。

我尝试了以下方法,但没有成功:

debug.print worksheetfunction.min(datedict.keys)

我不想创建一个循环来检查每个键并在不需要时将其与前一个进行比较。有没有更快更简单的方法来完成我的需要?

【问题讨论】:

  • 您的键实际上是日期还是字符串?

标签: excel vba


【解决方案1】:

当您将日期作为键时,字典会将它们转换为字符串,因此以后任何作为数字的比较(例如 Application.min(datedict.keys))都会失败。

作为解决方案,在插入字典之前将这些日期转换为数字。您可以使用CLng(myDate),因为您只关心一天,而不是时间。

Sub Test()
  Dim d As Date, datedict As New Dictionary

  d = DateSerial(2017, 6, 26)
  datedict.Add CLng(d), 1      ' <--- convert to long prior to insertion

  d = d - 1
  datedict.Add CLng(d), 2

  d = d + 5
  datedict.Add CLng(d), 3

  Dim minD As Date, maxD As Date
  minD = Application.min(datedict.Keys)
  maxD = Application.Max(datedict.Keys)
  Debug.Print minD, maxD
End Sub

输出:

2017 年 6 月 25 日 2017 年 6 月 30 日

【讨论】:

  • 工作就像一个魅力。谢谢。
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 2017-10-11
  • 1970-01-01
  • 2013-02-27
  • 2018-03-05
  • 2020-03-11
相关资源
最近更新 更多