如何使用VBA对重复值进行计数
我是VBA的新手,我试图找到在特定列中重复相同值的次数。如何使用VBA对重复值进行计数
然后我需要将值和重复值的计数粘贴到另一个工作表的A列和B列中。
我需要计数的重复值次数:
PSV_Cust_1
PSV_Cust_1
PSV_Cust_1
PSV_Cust_1
PSV_Cust_1
PSV_Cust_2
PSV_Cust_2
PSV_Cust_2
PSV_Cust_2
PSV_Cust_3
PSV_Cust_3
PSV_Cust_3
PSV_Cust_3
PSV_Cust_4
PSV_Cust_4
PSV_Cust_4
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
的结果应该是:
Value Count
PSV_Cust_1 5
PSV_Cust_2 4
PSV_Cust_3 4
PSV_Cust_4 3
PSV_Cust_5 7
请任意一个有利于使用VBA代码得到outpu。
这个宏会做你需要的东西:
Sub Summarize(rngSource As Range, rngTarget As Range)
Dim d As New Scripting.Dictionary
Dim rng As Range
Dim var As Variant
For Each rng In rngSource
If rng <> "" Then
If d.Exists(rng.Value) Then
d(rng.Value) = d(rng.Value) + 1
Else
d.Add rng.Value, 1
End If
End If
Next rng
rngTarget = "Value"
rngTarget.Offset(, 1) = "Count"
Set rng = rngTarget.Offset(1)
For Each var In d.Keys
rng = var
rng.Offset(, 1) = d(var)
Set rng = rng.Offset(1)
Next
End Sub
您需要参考在Visual Basic编辑器(工具 - >引用)添加到微软脚本库。你可以这样调用:
Summarize Sheet1.Range("A1:A24"), Sheet1.Range("C1")
谢谢你,我将使用pvote表格选项,我现在可以让我出去 – user2075655 2013-02-18 08:32:01
的COUNTIF(范围值)功能会做你想要的东西 - 它的优点是,可以更方便地限制你要搜索的值(相对于枢轴表)。假设您的数据处于您命名为“客户”的范围“Sheet1!A1:A25”中(您可以通过选择范围并在公式栏左侧的地址栏中输入customers
来实现此目的),并且包含“客户1,顾客2 ...通过客户10" ,和你只想知道多少次的客户1和5的出现,您可以创建在Sheet2上以下
col A col B
Value count
customer 1 =COUNTIF(customers, A1)
customer 5 =COUNTIF(customers, A2)
当然你也可以从刚刚拖动单元格公式向下B1 - 你不需要再次输入。
这将计数客户,自动更新......我认为这比在这个例子中的数据透视表更容易。
如果你想捕捉一个不断变化的客户列表,我不认为它比数据透视表更容易。 – 2013-02-15 14:54:32
@DougGlancy - 我同意你的意见。我将此作为替代方案“如果您只想知道某些客户出现的次数”。我不喜欢数据透视表的另一件事是他们可以改变大小,并且需要重新计算。我认为OP会从看到替代品中受益。我不是说这是“更好”,只是“不同” - 我认为Siddarth Rout得到的9个“有用”标志应该足以让OP注意到数据透视表的概念...... – Floris 2013-02-15 15:07:04
正如其他人所建议的,Pivot Table
将是最简单的方法来实现这一点。具体方法如下:
1)选择你要计算
2)从色带
3)在出现的窗口中选择
Insert -> PivotTable
行,单击Ok
到创建您的关键点 表格:
4)在下面的权利 “数据透视表字段列表:选择字段添加到报告:” 点击旁边的复选框:
5 )现在将刚刚单击下来的复选框字段拖到“值”列表中,然后释放:
6)这就是它!现在,您将有你的要求为:
不错的演练! +1 – 2013-02-15 23:55:10
谢谢!图片让事情变得如此简单。 – Sam 2013-02-16 02:19:20
谢谢,我将使用pvote表格选项,我现在可以让我出去 – user2075655 2013-02-18 08:32:35
使用数据透视表。你不需要vba :) – 2013-02-15 13:51:49
你到目前为止尝试过什么?您可以使用数据透视表或COUNTIF等工作表函数。 – 2013-02-15 13:54:32