根据条件循环遍历数组中的每个唯一日期

问题描述 投票:0回答:1

在表 1 中,我有一个平面文件格式的数据,包括日期。

在工作表 2 的单元格 A1 中,我的日期为 01/01/2019,在单元格 A2 中的日期为 31/12/2019。

在 VBA 中,我需要能够从工作表 1 中挑选出符合工作表 2 中 A1/A2 中指定的日期标准的唯一日期,并将它们放入工作表 3 中,为每个唯一日期增加一行。

Sheet 1数据结构如下:

    A            B
1   02/01/2019   Chromium
2   02/02/2019   Chromium
3   02/06/2019   Chromium
4   02/09/2019   Chromium
5   03/03/2020   Chromium
6   05/06/2020   Chromium
7   02/01/2019   Cadmium
8   10/10/2019   Cadmium
9   20/11/2019   Cadmium

在上面的示例数据集中,有 9 行包含日期,总共有 8 个唯一日期,但只有其中 6 行符合上面指定的日期标准。

我将把它合并到更广泛的 VBA 代码中的另一个循环中。

我想知道是否需要使用字典?

excel vba unique
1个回答
0
投票

简短、简单且快速的解决方案是

Option Explicit

Sub GetUniqueDatesBetween()
  Dim a, i&, j&, lb&, ub&, pv&
  a = Application.Sort(Sheet1.[A1].CurrentRegion.Columns(1).Value2)
  lb = Sheet2.[A1].Value2: ub = Sheet2.[A2].Value2
  i = 1: j = 1
  While a(i, 1) < lb: i = i + 1: Wend
  pv = a(i, 1) - 1
  While a(i, 1) <= ub
    If a(i, 1) > pv Then
      Sheet3.Cells(j, 1) = a(i, 1)
      pv = a(i, 1)
      j = j + 1
    End If
    i = i + 1
  Wend
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.