计算列中的唯一数据,然后将其与另一个唯一数据进行匹配

这是一个令人尴尬的简单问题,但我无法find一个方法来找出几个小时,也不能从网上searchfind一个想法。

假设我在Excel工作表(表1)中有以下数据(实际数据可能是成千上万):

Name No. ID A A1 B B4 B B5 C C0 D - A A1 A A2 E - F - C C0 B B5 B B5 B B5 B B6 A A1 A A1 A A2 B B3 B B3 B B3 

上面的列ID中的字符( – )也可以是数字0或空白单元格。

我想把上面的数据格式化如下(表2)

 Name Number of ID A 2 B 4 C 1 D 0 E 0 F 0 

这意味着A有2个ID(A1和A2),B有4个ID(B1,B2,B3和B4),C有1个ID(C0),D,E和F没有ID。

我可以通过使用Pivot Table获得最好的结果

在这里输入图像说明

如何在MS Excel中执行类似于表2的任务? 如果可能的话,它的VBA脚本。

如果有人对上述问题感兴趣的VBA解决scheme:

 Sub GetUniquesCount() Dim dict1 As Object, dict2 As Object Dim c1 As Variant, c2 As Variant Dim i As Long, lastRow As Long, count As Long Set dict1 = CreateObject("Scripting.Dictionary") Set dict2 = CreateObject("Scripting.Dictionary") lastRow = Cells(Rows.count, "A").End(xlUp).Row c1 = Range("A2:A" & lastRow) For i = 1 To UBound(c1, 1) dict1(c1(i, 1)) = 1 Next i Range("D2").Resize(dict1.count) = Application.Transpose(dict1.keys) lastRow = Cells(Rows.count, "B").End(xlUp).Row c2 = Range("B2:B" & lastRow) For i = 1 To UBound(c2, 1) dict2(c2(i, 1)) = 1 Next i For Each cel In Range("D2:D" & Cells(Rows.count, "D").End(xlUp).Row) count = 0 For Each k2 In dict2.keys If k2 Like cel.Value & "*" Then count = count + 1 End If Next k2 cel.Offset(0, 1).Value = count Next cel End Sub 

在这里输入图像说明

将列A复制到另一个未使用的列,然后执行数据►删除重复命令,然后对其进行分类。 很less有公式可以有效地处理数以千计的数据,没有数据可以处理数百万的数据。

在旁边的B栏也一样。 不要延长Remove Duplicates要求的select。

接下来,在刚刚创build的不重复的A列数据集旁边的列中使用以下公式:

 =COUNTIF(F:F, E2&"*") 

填写到不重复的数据范围内。 我假定你使用列E创build第一个不重复的数据集和F列的第二个。

helper12count