在工作表中,我有一个平面文件结构,其中包含日期列,后面是其他变量的附加列。
在 VBA 中,我需要能够计算 A 列(其命名范围为“日期”)中唯一日期的数量,并将此计数传递给 VBA 代码。
我尝试使用以下 VBA,但收到运行时错误 13,类型不匹配。
RawStartDate
是 Excel 日期格式的命名范围(单个单元格),即 01/01/2024,就像 RawEndDate
一样。
Dim RawDistinctDates as Long
RawDistinctDates = Application.WorksheetFunction.Count(Application.WorksheetFunction.Unique(Application.WorksheetFunction.Filter(Range("Date"), (Range("Date") >= Range("RawStartDate")) * (Range("Date") <= Range("RawEndDate")))))
MsgBox RawDistinctDates
我愿意使用纯 VBA 方法,而不是仅使用 WorksheetFunction。
为什么我无法让变量传递计数?
简短、简单且快速的解决方案是
Option Explicit
Function CountUniqueDatesBetween() As Long
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 = 0
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
pv = a(i, 1)
j = j + 1
End If
i = i + 1
Wend
CountUniqueDatesBetween = j
End Function