如何编写Excel函数来计算特定单元格范围内的唯一记录数

时间:2017-07-12 18:12:51

标签: excel excel-vba function vba

我有两列,一列有客户ID号,另一列有计划数。客户ID中包含字母和数字,而计划的计数是非零整数。

我首先需要一个函数:指定一系列与特定计划数相对应的客户ID(例如,所有客户ID的相应计划数为4)

然后是第二个:计算该计划数的唯一客户ID数。

例如,对于计划数量等于4的这些ID:

06U0547
06U0547
06U0547
06U5166
06U5166
06U5166
06U4990
06U4990
06U4990
06U4777
06U4777

匹配列

4
4
4
4
4
4
4
4
4
5
5

我希望Excel说“好吧,让我们只看这9个客户ID,计划数量等于4,然后计算唯一数字。这将是3个唯一数字。”所以函数应该返回“3”。这适用于任何n,因此对于n = 5,该函数应返回“1”,因为计划数为5时只有1个唯一的客户ID。

我该怎么写?我在这里查找了独特的值函数,但它们都不适合我,我找不到任何选择范围的功能。我只是一个实习生我对VBA一无所知。

非常感谢任何帮助,非常感谢你!

1 个答案:

答案 0 :(得分:0)

试试这个使用NULL事件的vba代码

worksheet_change

如果您的数据位于A列和B列,请在单元格Private Sub worksheet_change(ByVal target As Range) If target.Address = "$C$1" And Range("C1").Value <> "" And IsNumeric(Range("C1").Value) Then Range("D1:E20").ClearContents Dim i As Long, j As Long, k As Long k = 1 i = Range("C1").Value For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Range("B" & j).Value = i Then Range("D" & k).Value = Range("A" & j).Value2 Range("E" & k).Value = Range("B" & j).Value2 k = k + 1 End If Next j Range("D1:E" & j).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo Range("F1") = Application.WorksheetFunction.CountA(Columns(4)) End If End Sub 中输入4或5。宏检测到单元格C1的更改并删除列D和E中数据范围的重复项。然后它会告诉您单元格C1中的唯一计数。

enter image description here

enter image description here