Excel或访问计数出现次数

时间:2017-04-07 11:44:27

标签: excel vba ms-access count duplicates

我更喜欢Access中的解决方案,但它不是Excel,我已经调查了两个,但我很难找到解决方案。情况如下: - 在Access中 - 与唯一键链接的7个表。每个表都有一个邮政编码,我需要找出有多少重复的邮政编码。没有铅邮政编码可供比较。例如: -

  

RM9 6BG,RM9 6BG,RM10 9PL,RM9 6BG,RM9 6SR,RM9 6BG,RM9 6SR

结果将是: -

  

RM9 6BG = 4   RM10 9PL = 1   RM9 6SR = 2

如果发生这种情况,有时表格对邮政编码没有任何价值我不希望这些计为重复分组/计数的一部分。 有超过3000条记录。 请不要评论规范化......

在Excel中等效: - “查找重复项”的条件格式在第一行有效,但这只突出显示它们不会对它们进行分组和计数,还需要将其添加到30多万行?我尝试了各种CountIf但没有成功。

欢迎所有解决方案,包括VBA。

2 个答案:

答案 0 :(得分:0)

如果没有完全掌握你的桌面结构(即字段名称/表名等等),我认为你要做到这一点的唯一方法就是做到以下几点:

  1. 确保您拥有每条记录的主键/唯一ID。这可能需要您将自动编号字段放入表中。

  2. 为每条记录执行转置查询,以便您从以下地址开始:

    UID ...... PC1 PC2 .............. ................ PC3 ....... ......... PC4 ...............等....

    1 .......... RM9 6BG ..... RM9 6BG ....... RM10 9PL ....... RM9 6SR

  3.     UID        PostalCode
        1          RM9 6BG
        1          RM9 6BG
        1          RM10 9PL
        1          RM9 6SR
    
    1. 对每个Transpose执行UNION查询(我打赌你必须在循环中执行此操作,因为你无法让SQL字符串足够长时间来完成

    2. 对结果执行GROUP BY查询,并为每个UID计算每个邮政编码。

    3. 我不知道如何以更优雅的方式做到这一点。我的意思是,它并不都是可怕的,因为你可以在循环中执行每一步(对于X = 1到30000,选择*其中UID = X等等)然后只需将结果附加到表中而不是实际进行UNION查询。然后,结果表上的GROUP BY查询将获得您的数字。

答案 1 :(得分:0)

@Jonny Bones感谢您抽出时间,我提出了以下解决方案: - 我连续创建了一个包含所有字段(Postcode)的字符串,然后使用了一个函数来计算字符串(Postcode)出现在该字符串中的次数。