VBA代码计数发生

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 
+0

INSTEAD OF也许你能告诉我们什么没有奏效?我们不是巫师,我们看不到你所尝试过的。 – 2014-09-22 13:10:23

+1

不会有一个简单的'= COUNTIF(A:A,“A”)'吗? – 2014-09-22 13:23:42

+0

是的,它会,但我需要如表中所示的输出,如果数据我们巨大,countif不会是一个好选择。最好的方法是透视表,但我需要动态数据的VBA代码。 – 2014-09-22 13:26:50

给这个小宏一试:

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 

例如:

PseudoPivot

+0

谢谢!!正是我想要的:) – 2014-09-22 13:36:15

为什么不能ü尝试喜欢这个VBA

=COUNTIF(A:A,C2) 'HERE C2 IS THE REFERENCE 

enter image description here

+0

好技术!诀窍是如何填写列** C ** – 2014-09-22 13:41:31