2016-10-10 14 views
2

私はこのピボットテーブルを使用して、 "プラント名"を並べ替えることができます。私は単純に、 "Plant26"、 "Plant12"などと並んで機能を並べて、並べ替えることができる植物の名前を知ることができます。しかし、数千の行を繰り返し、その列内で名前の違いを見つけて、それを配列に追加するのではなく、これらの名前にすべてアクセスして配列に配置する方法がありますか?ピボットテーブルとVBA

例:

For i = 5 to lastrow 
    Name = Cells(i, "A").Value 
    If 
    'in array 
    Else 
    'add in array 
    End If 
    next i 

しかしより高速な方法はありますか?ソートして配列に入れることができるこれらの植物名を得ることは可能ですか?ここで

With Worksheets("sheet2").PivotTables(1) 
    For i = 1 To .PivotFields("Plant Name").Count 
     MsgBox .PivotFields(i).Name 
     'Add to array 
    Next 
End With 
+0

あなたが持っている 'PivotTable'からそれらを取得したいですか? @ShaiRadoはい。 –

+0

ピボットテーブルには "Plant Name"フィールドがあり、どこに表示するか確認したいプラントを確認できます。私は、チェック可能であるか、チェックされていない(見ることができる)植物をすべてアレイに入れたいと思っています。 –

+0

下の私の答えでコードを試してください –

答えて

1

これは、あなたが始めるだろう..それはあなたのPivotField「植物名」内のすべてのPivotItemsが表示されます擬似例です。

ActiveSheetを使用しないことをお勧めします。

ます。Option Explicit

Sub GetAllPlantNamefromPivot() 

Dim PvtItm    As PivotItem 
Dim PvtFld    As PivotField 
Dim PlantArr()   As Variant 
Dim count    As Long 

Set PvtFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Plant Name") 

' reset Plant Name Array count 
count = 0 

For Each PvtItm In PvtFld.PivotItems 
    ReDim Preserve PlantArr(0 To count) 
    PlantArr(count) = PvtItm 
    count = count + 1 
Next PvtItm 

End Sub 
0

これは、植物の名前をリストアップし、Sheet3での結果の配列が表示されます。

Sub test_Amasian21() 
Dim A() 
ReDim A(1 To 1) 
Dim i As Double 

With Sheets("sheet2").PivotTables(1).PivotFields("Plant Name") 
    For i = 1 To .PivotItems.Count 
     A(UBound(A)) = .PivotItems(i).Name 
     ReDim Preserve A(LBound(A) To UBound(A) + 1) 
    Next i 
End With 
ReDim Preserve A(LBound(A) To UBound(A) - 1) 

Sheets("sheet3").Range("A1").Resize(UBound(A), 1).Value = A 
End Sub 
関連する問題