计算设定日期范围内的唯一值

Count unique values in a set date range

我需要根据日期范围(可以是一天或几天)计算列中有多少个唯一值(名称)。

我的数据存储如下。

A 列 = 日期 mm/dd/yy
B 列 = 姓名

不幸的是,数据导入我的文件的方式没有给我任何其他选择,只能使用姓名作为唯一员工标识的参考,没有列出 ID。

想法是有 2 个单元格,"From" 和 "To" 输入日期以执行唯一值计算并将结果 return 到另一个单元格。

我已经或多或少地制作了我正在寻找的样本。您会找到一个我想输入日期的选项卡和一个包含示例数据库的选项卡。

http://public.justcloud.com/e04wqfgc89.83937591

这些唯一值将允许我执行报告所需的额外计算。

Results!S2 的公式应如下所示:

=SUMPRODUCT(((DB!$A:$A2>=A2)*(DB!$A:$A2<=B2))/(COUNTIFS(DB!$A:$A2,">="&A2,DB!$A:$A2,"<="&B2,DB!$B:$B2,DB!$B:$B2&"")+(DB!$A:$A2<A2)+(DB!$A:$A2>B2)))

我见过工作表设计者使用 MIN(A2:B2)MAX(A2:B2) 来防止用户输入 StartStop 日期顺序错误,但我通常让用户自行破坏,因为他们无法区分 Date FromDate To.

你可以在 C2

中使用这个 "array formula"

=SUM(IF(FREQUENCY(IF((DB!A:A0>A2)*(DB!A:A0<B2),MATCH(DB!B:B0,DB!B:B0,0)),ROW(DB!B:B0)-ROW(DB!B)+1),1))

已通过 CTRL+SHIFT+ENTER

确认

试试这个

Sub test()
Dim oCell As Range, i&, LRow&: i = 1
Dim Group As Object: Set Group = CreateObject("Scripting.Dictionary")
Dim DtFrom As Date, DtTo As Date
With Sheets("Results")
    DtFrom = .Cells(2, 1).Value
    DtTo = .Cells(2, 2).Value
End With
LRow = Sheets("DB").Cells(Rows.Count, "B").End(xlUp).Row
    For Each oCell In Sheets("DB").Range("A2:A" & LRow)
        If Not Group.exists(oCell.Offset(, 1).Value) And oCell.Value <> "" And _
        CDate(oCell.Value) >= DtFrom And CDate(oCell.Value) <= DtTo Then
            Group.Add oCell.Offset(, 1).Value, i: i = i + 1
        End If
    Next
Sheets("Results").Cells(2, 3).Value = Group.Count
End Sub