VBA代码计数发生
问题描述:
我有列A,其中有一些元素需要分别计算出来,并分别粘贴在列D & E中。
由于列A中的元素不同,我无法使用我获得的用于录制数据透视表的VBA代码。
任何人都可以请帮我这个吗?VBA代码计数发生
Name Name Count
A A 5
A B 3
A C 1
A D 1
B
B
C
B
D
A
这是我的尝试: -
Sub Macro1()
'
' Macro1 Macro
'
'
Columns("A:A").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R1048576C1", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Sheet1!R1C4", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion14
Sheets("Sheet1").Select
Cells(1, 4).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Name")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables(_
"PivotTable1").PivotFields("Name"), "Count of Name", xlCount
End Sub
答
给这个小宏一试:
Sub KountUneek()
Dim c As Collection, wf As WorksheetFunction, _
K As Long, N As Long, i As Long, _
v As Variant
Set c = New Collection
Set wf = Application.WorksheetFunction
K = 1
N = Cells(Rows.Count, "A").End(xlUp).Row
On Error Resume Next
For i = 1 To N
v = Cells(i, "A").Value
c.Add v, CStr(v)
If Err.Number = 0 Then
Cells(K, "B").Value = v
Cells(K, "C").Value = wf.CountIf(Range("A:A"), v)
K = K + 1
Else
Err.Number = 0
End If
Next i
On Error GoTo 0
End Sub
例如:
+0
谢谢!!正是我想要的:) – 2014-09-22 13:36:15
答
为什么不能ü尝试喜欢这个VBA
=COUNTIF(A:A,C2) 'HERE C2 IS THE REFERENCE
+0
好技术!诀窍是如何填写列** C ** – 2014-09-22 13:41:31
INSTEAD OF也许你能告诉我们什么没有奏效?我们不是巫师,我们看不到你所尝试过的。 – 2014-09-22 13:10:23
不会有一个简单的'= COUNTIF(A:A,“A”)'吗? – 2014-09-22 13:23:42
是的,它会,但我需要如表中所示的输出,如果数据我们巨大,countif不会是一个好选择。最好的方法是透视表,但我需要动态数据的VBA代码。 – 2014-09-22 13:26:50