计算行中不同的单词并将计数粘贴到表2中

时间:2015-08-08 08:37:49

标签: excel vba excel-vba

我有一个包含多组数据的Excel列。我想在其中查找所有不同记录集的计数,然后将其结果打印在同一Excel中的表单2的单元格中。

  

客户端

     

* Burberry Group p

     

* CA Technologies

     

* CA Technologies

     

* CA Technologies

     

* CA Technologies

     

* CA Technologies

     

* CA Technologies

     

* CA Technologies

     

CSM Bakery Solut

     

Deckers Outdoor

     

美泰公司(Glo

     

美泰公司(Glo

     

美泰公司(Glo

     

美泰公司(Glo

     

美泰公司(Glo

     

美泰公司(Glo

     

美泰公司(Glo

     

Riverbed Technol

     

Riverbed Technol

     

Riverbed Technol

     

Riverbed Technol

     

Riverbed Technol

     

Riverbed Technol

     

Smurfit Kappa Gr

     

Smurfit Kappa Gr

     

Smurfit Kappa Gr

     

Smurfit Kappa Gr

     

Thermo Fisher Sc

     

Thermo Fisher Sc

     

Thermo Fisher Sc

     

Thermo Fisher Sc

     

Thermo Fisher Sc

     

Thermo Fisher Sc

     

Thermo Fisher Sc

对于上述数据。 结果应为8,因为有8个客户名称。但是在专栏中重复了这些。

计数结果应打印在第2页单元格中。

2 个答案:

答案 0 :(得分:1)

以下数组公式将计算Sheet1列A中的唯一值,然后将结果放在A1 Sheet2上:

Dim s As String
s = "Sheet1!" & Sheet1.Range("A1", Sheet1.Range("A1").End(xlDown)).Address
Sheet2.Range("A1") = Evaluate("=SUM(1/COUNTIF(" & s & "," & s & "))")

答案 1 :(得分:0)

您可以使用此VBA代码,假设您的数据位于Sheet1!A2:A100且输出位于Sheet2!A1

Dim row As Integer, start_row As Integer, end_row As Integer, v As String, concat As String, count_distinct As Integer
start_row=2
end_row=100
concat="~"
For row = start_row to end_row
  v=Sheet1.Range("A" & row)
  If InStr(concat,v)<=0 Then concat=concat & "~" & v
Next row
count_distinct=UBound(Split(concat,"~"))
Sheet2.Range("A1")=count_distinct

计数在count_distinct,值在Split(concat,"~")

但是,您不需要VBA来过滤重复项,

只需阅读&#34;删除重复值&#34; Filter for unique values with excel中的部分,它是内置功能