2016-03-30 28 views
0

Bir pivot tablodan ile çalışıyorum ve aşağıdaki kodu kullanıyorum sıralama için pivot tablo satırlarında ne seçilir? Eğer Endüstri "Liste Adı" olarak değişirse, değişken seçilen satır etiketine ayarlanmış mı (sadece 1 satır etiketi varsayar)? Bunlar daha sonra, sütun numaralarının aynı kaldığı "TO'ya göre sırala" veya "Açık Orana göre sırala" olan bir düğmeye geçirilir.Geçiş A Değişken Pivot VBA

Düzenleme: Verilerin bir ekran görüntüsü eklendi. Satır Etiketi Endüstri'dir, ancak bu diğer alanlardan herhangi birine değişebilir, birinci sıra etiketini birincil sıralama değişkenini nasıl yapabilirim.

Excel sheet

cevap

2

Özet Tablo RowFields döngü akım alanın adını bulmak için yapabilirsiniz. Kod, tablonun şu anda yalnızca 1 RowField olduğundan emin olmak için kontrol eder. Belirli nesne adlarınız için ayarlamalar yapın.

Sub SortCTRDescending() 

Dim ws As Worksheet 
Dim pt As PivotTable 
Dim pf As PivotField, pField As PivotField 
Dim sField As String 

Set ws = Worksheets("Sheet1") 'change as needed 
Set pt = ws.PivotTables("PivotTable6") 

If pt.RowFields.Count = 1 Then 

    'note that even though there is only one field, the loop is needed to get the name 
    For Each pField In pt.RowFields 
     sField = pField.Name 
    Next 

Else 

    MsgBox "Whoa! More Than 1 Row Field!" 
    Exit Sub 

End If 

Set pf = pt.PivotFields(sField) 

pf.AutoSort xlDescending, "Total CTR", pt.PivotColumnAxis.PivotLines(6), 1 

End Sub 
+0

Bu, adın göründüğü bir yer olduğunu varsayar, ancak olmaz. O anda aktif olan Pivot Field'i ayrıştırmanın bir yolu var ve sonra bu değeri bir menzile geçirebilirsin? – GregdeLima

+0

@GregdeLima, soruyu bir ekran görüntüsü açıklamasıyla güncelleyebilir misiniz? Şu anda aktif Pivot Field * ile ne demek istediğini bilmiyorum. –

+0

Ekran görüntüsü eklendi. – GregdeLima