2014-09-22 42 views
0

我有列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

回答

0

給這個小宏一試:

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

0

爲什麼不能ü嘗試喜歡這個VBA

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

enter image description here

+0

好技術!訣竅是如何填寫列** C ** – 2014-09-22 13:41:31