Excel VBA - 如何在字典中找到最小和最大的键

时间:2017-06-26 17:03:22

标签: excel-vba vba excel

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

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

我试了以下但没有运气:

debug.print worksheetfunction.min(datedict.keys)

我不想创建一个循环来检查每个密钥,并将其与前一个密钥进行比较,如果我不需要的话。有没有更快更容易的方法来完成我的需要?

1 个答案:

答案 0 :(得分:2)

当您将日期作为键时,字典会将它们转换为字符串,因此任何后来的数字比较(例如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
  

<强>输出:

     

6/25/2017 6/30/2017

相关问题