Note: The other languages of the website are Google-translated. Back to English

Excel'deki belirli bir hücre değerine göre Pivot tablo nasıl filtrelenir?

Normalde, aşağıdaki ekran görüntüsünde gösterildiği gibi açılır listedeki öğeleri seçerek bir Özet Tablodaki verileri filtreliyoruz. Aslında, belirli bir hücredeki değere göre bir pivot tabloya filtre uygulayabilirsiniz. Bu makaledeki VBA yöntemi, sorunu çözmenize yardımcı olacaktır.

VBA kodu ile belirli bir hücre değerine göre Pivot Tabloyu filtreleyin


VBA kodu ile belirli bir hücre değerine göre Pivot Tabloyu filtreleyin

Aşağıdaki VBA kodu, Excel'deki belirli bir hücre değerine göre bir Pivot Tabloyu filtrelemenize yardımcı olabilir. Lütfen aşağıdaki işlemleri yapın.

1. Lütfen Pivot Tabloyu önceden bir hücreye göre filtreleyeceğiniz bir değer girin (burada H6 hücresini seçiyorum).

2. Hücre değerine göre filtreleyeceğiniz Pivot Tabloyu içeren çalışma sayfasını açın. Ardından, sayfa sekmesine sağ tıklayın ve içerik menüsünden Kodu Görüntüle'yi seçin. Ekran görüntüsüne bakın:

3. Açılışta Uygulamalar için Microsoft Visual Basic penceresinde, VBA kodunu Kod penceresine kopyalayın.

VBA kodu: Pivot Tablosunu hücre değerine göre filtrele

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("H6:H7")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
    Set xPFile = xPTable.PivotFields("Category")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
End Sub

notlar: Kodda,

1) "Sheet1"Çalışma sayfasının adıdır.
2) "Özet Tablo2"Pivot Tablonun adıdır.
3) Pivot tablodaki filtreleme alanına "Kategoriler".
4) Pivot tabloyu filtrelemek istediğiniz değer hücreye yerleştirilir H6.
Yukarıdaki değişken değerlerini ihtiyaç duyduğunuz şekilde değiştirebilirsiniz.

4. Tuşuna basın. Ara Toplam + Q kapatmak için anahtarlar Uygulamalar için Microsoft Visual Basic pencere.

Ardından Pivot Tablo, aşağıda gösterilen ekran görüntüsü gibi H6 hücresindeki değere göre filtreleme yapıyor:

İhtiyaç duyduğunuzda hücre değerini başkalarına değiştirebilirsiniz.

not: H6 hücresine yazdığınız değerler, Pivot Tablosunun Kategori açılır listesindeki değerlerle tam olarak eşleşmelidir.


İlgili yazılar:


En İyi Ofis Üretkenliği Araçları

Kutools for Excel Sorunlarınızın Çoğunu Çözer ve Verimliliğinizi% 80 Artırır

  • Yeniden: Hızlıca yerleştirin karmaşık formüller, grafikler ve daha önce kullandığınız her şey; Hücreleri Şifrele şifre ile; Posta Listesi Oluşturun ve e-posta gönder ...
  • Süper Formül Çubuğu (birden çok metin ve formül satırını kolayca düzenleyin); Okuma Düzeni (çok sayıda hücreyi kolayca okuyun ve düzenleyin); Filtrelenmiş Aralığa Yapıştır...
  • Hücreleri / Satırları / Sütunları Birleştirme Veri kaybetmeden; Bölünmüş Hücre İçeriği; Yinelenen Satırları / Sütunları Birleştirme... Yinelenen Hücreleri Önleyin; Aralıkları Karşılaştır...
  • Yinelenen veya Benzersiz'i seçin Satırlar; Boş Satırları Seçin (tüm hücreler boştur); Süper Bul ve Bulanık Bul Birçok Çalışma Kitabında; Rastgele Seçim ...
  • Tam kopya Formül referansını değiştirmeden Birden Çok Hücre; Otomatik Referans Oluştur Birden Çok Sayfaya; Madde İşaretleri Ekle, Onay Kutuları ve daha fazlası ...
  • Metni Çıkar, Metin Ekle, Konuma Göre Kaldır, Alanı Kaldır; Sayfalama Alt Toplamları Oluşturma ve Yazdırma; Hücre İçeriği ve Yorumları Arasında Dönüştür...
  • Süper Filtre (filtre şemalarını kaydedin ve diğer sayfalara uygulayın); Gelişmiş Sıralama ay / hafta / gün, sıklık ve daha fazlasına göre; Özel Filtre kalın, italik ...
  • Çalışma Kitaplarını ve Çalışma Sayfalarını Birleştirin; Tabloları anahtar sütunlara göre birleştirin; Verileri Birden Çok Sayfaya Bölme; Toplu dönüştürme xls, xlsx ve PDF...
  • 300'den fazla güçlü özellik. Office / Excel 2007-2021 ve 365'i destekler. Tüm dilleri destekler. Kuruluşunuzda veya kuruluşunuzda kolay devreye alma. Tam özellikler 30 günlük ücretsiz deneme. 60 günlük para iade garantisi.
kte sekmesi 201905

Office Tab, Office'e Sekmeli Arayüz Getirir ve İşinizi Çok Daha Kolay Hale Getirir

  • Word, Excel, PowerPoint'te sekmeli düzenlemeyi ve okumayı etkinleştirin, Publisher, Access, Visio ve Project.
  • Yeni pencereler yerine aynı pencerenin yeni sekmelerinde birden çok belge açın ve oluşturun.
  • Üretkenliğinizi% 50 artırır ve her gün sizin için yüzlerce fare tıklamasını azaltır!
ofis tabanı
Yorumları sıralama ölçütü
Yorumlar (23)
Henüz derecelendirme yok. İlk değerlendiren siz olun!
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu kodu kullanarak (elbette değişkenlerim için güncellendi), alanı değiştirirken, filtre anlık olarak doğru olana değişir ve ardından neredeyse anında kendini temizler. Bunu neden yaptığını anlamaya çalışıyorum (alt bölümün sonundaki ClearAllFilters ile bir ilgisi olup olmadığını merak ediyor musunuz?)
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hiyerarşisi olan bir rapor filtresiyle bunu nasıl yapardınız?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hey! Makronuz için teşekkürler.

Aynı sayfada birden fazla pivot tablo için kullanmaya çalışıyordum ama olmuyor. Bunu şöyle yazdım:

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
xPTable1'i PivotTable Olarak Karartın
PivotField Olarak xPFile1'i Karartın
Dize Olarak Dim xStr1
On Error Resume Next
Eğer Intersect(Hedef, Aralık("D7")) Hiçbir Şey Değilse, Sub'dan Çıkın
Application.ScreenUpdating = Yanlış
xPTable1'i ayarla = Çalışma Sayfaları("BUSCADOR").PivotTables("PV_ETAPA1")
xPFile1 = xPTable1.PivotFields("ETAPA1") olarak ayarlayın
xStr1 = Hedef.Metin
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

xPTable2'i PivotTable Olarak Karartın
PivotField Olarak xPFile2'i Karartın
Dize Olarak Dim xStr2
On Error Resume Next
Eğer Intersect(Hedef, Menzil("G7")) Hiçbir Şey Değilse Sub'dan Çıkın
Application.ScreenUpdating = Yanlış
xPTable2'i ayarla = Çalışma Sayfaları("BUSCADOR").PivotTables("PV_ETAPA2")
xPFile2 = xPTable2.PivotFields("ETAPA2") olarak ayarlayın
xStr2 = Hedef.Metin
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

End Sub

Belki bana yardım edebilirsin!

Şimdiden teşekkürler!
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hi


Makro için teşekkürler


Aynı şeyi deniyorum ama 2 tabloda çalışmasını sağlayamıyorum. ikisi de aynı hücreye bakıyorlar sadece 2 farklı pivot tablo


Teşekkürler
Bu yorum sitedeki moderatör tarafından en aza indirildi
Pivot Tablo adını değiştirmeniz gerekir. Her pivot tablonun farklı bir adı vardır. Bunu elde etmek için pivota sağ tıklayın ve pivot tablo ayarlarını seçin, isim en üstte olacaktır.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bonjour

İkinci TCD'yi ikinci işleve dönüştürmek için ikinci TCD'yi eklemeyi anlayabilir.
Pourriez-vous m'aider?

sağol
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba nedense görsel temel sayfasına girdikten sonra bu makro hiç gözükmüyor. Bu makroyu etkinleştiremiyorum/çalıştıramıyorum, tüm güven merkezi ayarını kontrol ettim ama hiçbir şey olmuyor, lütfen bana yardım edin
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba, bunun işe yaramasını sağlayamıyorum. Başvurmak istediğim hücre bir formülden alınmış - filtrenin, formülün döndürdüğü değerden ziyade formüle bakarken onu bulamamasının nedeni bu olabilir mi? Şimdiden teşekkürlerHeather McDonagh
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba Heather, bir çözüm buldunuz mu? bende de aynı sorun var
Bu yorum sitedeki moderatör tarafından en aza indirildi
Aynı sekmede bulunan 3 farklı pivotu değiştirebildim/filtreleyebildim. Ayrıca "Veri Bulunamadı" veri kümeme bir satır ekledim, aksi halde filtreyi istemediğim "TÜMÜ" olarak bıraktı. Yukarıdakiler, yönetimle Kudos kazanmam için çok yardımcı oldu, bu yüzden paylaşmak istedim. (Tümü) büyük/küçük harf duyarlıdır, bunu anlamam biraz zaman aldı.
Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
'Ölçek
xPTable'ı PivotTable Olarak Karartın
PivotField Olarak xPFile'ı Karartın
xStr'yi Dize Olarak Kıs

PivotTable Olarak x2PTable'ı Karartın
PivotField Olarak x2PFile Dim
Dize Olarak Dim x2Str

PivotTable Olarak x3PTable'ı Karartın
PivotField Olarak x3PFile Dim
Dize Olarak Dim x3Str

On Error Resume Next
Eğer Intersect(Target, Range("a2:e2")) Hiçbir Şey Değilse Exit Sub

Application.ScreenUpdating = Yanlış

tbl-1
xPTable = Worksheets("Graphical") olarak ayarlayın.PivotTables("PivotTable1")
xPFile = xPTable.PivotFields ("MR Departmanı - Departman") olarak ayarlayın
xStr = Hedef.Metin
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
xPFile.CurrentPage = "(Tümü)" ise, xPFile.CurrentPage = "Veri Bulunamadı"

tbl-2
x2PTable = Worksheets("Graphical") olarak ayarlayın.PivotTables("PivotTable2")
x2PFile = x2PTable.PivotFields ("MR Departmanı - Departman") olarak ayarlayın
x2Str = Hedef.Metin
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str
x2PFile.CurrentPage = "(Tümü)" ise, x2PFile.CurrentPage = "Veri Bulunamadı"

tbl-3
x3PTable = Worksheets("Graphical") olarak ayarlayın.PivotTables("PivotTable3")
x3PFile = x3PTable.PivotFields ("MR Departmanı - Departman") olarak ayarlayın
x3Str = Hedef.Metin
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str
x3PFile.CurrentPage = "(Tümü)" ise, x3PFile.CurrentPage = "Veri Bulunamadı"

Application.ScreenUpdating = True

End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Google sayfaları ile bu mümkün mü? Öyleyse nasıl?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Google E-Tablolar herhangi bir pivot tablo gerektirmez. doğrudan Filtre İşlevi aracılığıyla gerçekleştirebilirsiniz
Bu yorum sitedeki moderatör tarafından en aza indirildi
Aynı çalışma sayfasında birden fazla Çalışma Sayfası Değişikliği kodu kullanmak istiyorum. Bu nasıl yapılır? Kodum aşağıdaki gibidir:
Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
'Hücre değerine dayalı özet tablo filtresi
xPTable'ı PivotTable Olarak Karartın
PivotField Olarak xPFile'ı Karartın
xStr'yi Dize Olarak Kıs
On Error Resume Next
Intersect(Target, Range("D20:D21")) Hiçbir Şey Değilse, Exit Sub
Application.ScreenUpdating = Yanlış
xPTable = Çalışma Sayfaları("Sayfa1").PivotTables("PivotTable2") olarak ayarlayın
xPFile = xPTable.PivotFields ("Tanımlama") olarak ayarlayın
xStr = Hedef.Metin
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Özel Alt Çalışma Sayfası_Change2(Aralık Olarak ByVal Hedefi)
'2 hücre değerine dayalı özet tablo filtresi
xPTable'ı PivotTable Olarak Karartın
PivotField Olarak xPFile'ı Karartın
xStr'yi Dize Olarak Kıs
On Error Resume Next
Intersect(Target, Range("H20:H21")) Hiçbir Şey Değilse, Sub Exit Sub
Application.ScreenUpdating = Yanlış
xPTable = Çalışma Sayfaları("Sayfa1").PivotTables("PivotTable2") olarak ayarlayın
xPFile = xPTable.PivotFields("Teklif") olarak ayarlayın
xStr = Hedef.Metin
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Olá, gostaria de saber se quisesse filtrar mais de uma categoria komo poderia ser?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Seçim hücresini farklı bir sekmeye bağlamak istersem ne olur? Bu şimdiye kadar benim kodum
Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
xPTable1'i PivotTable Olarak Karartın
PivotField Olarak xPFile1'i Karartın
Dize Olarak Dim xStr1
On Error Resume Next
Eğer Intersect(Hedef, Aralık("B1")) Hiçbir Şey Değilse, Sub'dan Çıkın
Application.ScreenUpdating = Yanlış
xPTable1'i ayarla = Çalışma Sayfaları("SM_SKU PIVOTS").PivotTables("PivotTable1")
xPFile1 = xPTable1.PivotFields("Coğrafya") olarak ayarlayın
xStr1 = Hedef.Metin
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

xPTable2'i PivotTable Olarak Karartın
PivotField Olarak xPFile2'i Karartın
Dize Olarak Dim xStr2
On Error Resume Next
Eğer Intersect(Hedef, Aralık("B1")) Hiçbir Şey Değilse, Sub'dan Çıkın
Application.ScreenUpdating = Yanlış
xPTable2'i ayarla = Çalışma Sayfaları("SM_SKU PIVOTS").PivotTables("PivotTable4")
xPFile2 = xPTable2.PivotFields("Coğrafya") olarak ayarlayın
xStr2 = Hedef.Metin
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

xPTable3'i PivotTable Olarak Karartın
PivotField Olarak xPFile3'i Karartın
Dize Olarak Dim xStr3
On Error Resume Next
Eğer Intersect(Hedef, Aralık("B1")) Hiçbir Şey Değilse, Sub'dan Çıkın
Application.ScreenUpdating = Yanlış
xPTable3'i ayarla = Çalışma Sayfaları("SM_SKU PIVOTS").PivotTables("PivotTable8")
xPFile3 = xPTable3.PivotFields("Coğrafya") olarak ayarlayın
xStr3 = Hedef.Metin
xPFile3.ClearAllFilters
xPFile3.CurrentPage = xStr3
Application.ScreenUpdating = True

End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba!

VBA'da yeniyim ve hücre aralığına dayalı bir özet filtre seçmek için bir koda sahip olmak istiyorum.
"CurrentPage" öğesini bir aralık değeri olarak nasıl değiştirebilirim?
Teşekkür ederim!!
-------------------------------------------------- -----------------------------------------
Alt Baskı Turu()

ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bereich 1].[Tur].[Tur ]"). _
Tüm Filtreleri Temizle
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bereich 1].[Tur].[Tur]"). _
CurrentPage = "[Bereich 1].[Tur lt. Anlieferungstag].&[4001-01]"
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu kod için çok teşekkürler! Alanlarımı karşılayacak şekilde ayarladıktan sonra çalıştırdım, ancak sayfamda bazı değişiklikleri biçimlendirdikten sonra artık çalışmıyor! A1'den B1'e taşıdım, göze çarpması için bazı hücre biçimlendirmelerini değiştirdim, vb. Çok çılgınca bir şey yok ama şimdi B1'deki metni değiştirdiğimde güncellenmiyor. Herhangi bir fikri olan var mı?

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
'Ölçek
xPTable'ı PivotTable Olarak Karartın
PivotField Olarak xPFile'ı Karartın
xStr'yi Dize Olarak Kıs

PivotTable Olarak x2PTable'ı Karartın
PivotField Olarak x2PFile Dim
Dize Olarak Dim x2Str

PivotTable Olarak x3PTable'ı Karartın
PivotField Olarak x3PFile Dim
Dize Olarak Dim x3Str

On Error Resume Next
Eğer Intersect(Target, Range("b1")) Hiçbir Şey Değilse Sub'dan Çıkın

Application.ScreenUpdating = Yanlış

tbl-1
xPTable = Worksheets("Satır Raporu") olarak ayarlayın.PivotTables("PivotTable7")
xPFile = xPTable.PivotFields ("Ütopya Kaynağı") olarak ayarlayın
xStr = Hedef.Metin
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr

tbl-2
x2PTable = Worksheets("Satır Raporu") olarak ayarlayın.PivotTables("PivotTable2")
x2PFile = x2PTable.PivotFields ("Ütopya Kaynağı") olarak ayarlayın
x2Str = Hedef.Metin
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str

tbl-3
x3PTable = Worksheets("Satır Raporu") olarak ayarlayın.PivotTables("PivotTable3")
x3PFile = x3PTable.PivotFields ("Ütopya Kaynağı") olarak ayarlayın
x3Str = Hedef.Metin
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str

Application.ScreenUpdating = True

End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba Lance,
Kodunuzu test ettim ve benim durumumda iyi çalışıyor. Hücre biçiminin değiştirilmesi, kodun çalışmasını etkilemez.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Birden çok tablo kullanırken Power Pivot ile nasıl çalışır? Filtredeki değeri değiştirerek makro kaydettim. Yukarıdaki kodun çalışması için birkaç değişiklik yapıldı. Ancak Tip uyuşmazlığı hatası veriyor. Ne yaparsam yapayım.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba DK,
Yöntem, Power Pivot için çalışmaz. Rahatsızlıktan dolayı özür dileriz.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bonjour
Bu açıklamalar için çok teşekkür ederim.

J'aimerai, bir filtreyi (1 selül) en F4 örnek olarak filtrerait deux TCD qui sont sur la meme feuille.

Bu işlev, ikinci bir birleştirme denemesinin en büyük TCD'si olabilir, ancak geçemez.
Bana yardım eder misin

merci beaucoup
Ambrose
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bonjour

Merci beaucoup, parfaitement'in açıklanması için.
Revanche, j'aimerais, yararlı bir kodu kullanmak için, yemek masasının dinamiklerini ve sıcak havanın en sıcak mevsiminde iki tabloyu filtreleyebilir. Bu ikili arasındaki küçük fark, meme kaynaklarından yararlanmaz. En revanche, le filtre sur lequel se base ces TDC est le meme.

İşleyiş kodunuzu nasıl değiştireceğinize daha fazla yardımcı olabilir misiniz?

TCD'den yürüyüş yapmak için kullanılan kod sesi :

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
'Güncelleme Extendoffice 20180702
xPTable'ı PivotTable Olarak Karartın
PivotField Olarak xPFile'ı Karartın
xStr'yi Dize Olarak Kıs
On Error Resume Next
Eğer Intersect(Hedef, Menzil("G4")) Hiçbir Şey Değilse Sub'dan Çıkın
Application.ScreenUpdating = Yanlış
xPTable = Worksheets("Cadrage").PivotTables("Tableau croisé dynamique7") olarak ayarlayın
xPFile = xPTable.PivotFields("N°PROJET") olarak ayarlayın
xStr = Hedef.Metin
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

merci beaucoup
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba Ambroise,

Üzgünüz, ihtiyaçlarınızı karşılamak için bu kodu değiştirmek zor. Birden çok pivot tabloyu tek bir filtreyle filtrelemek istiyorsanız, aşağıdaki bu makaledeki yöntemler size bir iyilik yapabilir:
Excel'de tek bir dilimleyiciyi birden çok pivot tabloya nasıl bağlayabilirim?
Buraya henüz hiç yorum yapılmamış
Lütfen yorum yazın
Misafir olarak yayınlama
×
Bu gönderiyi değerlendirin:
0   Karakterler
Önerilen Konumlar

Bizi takip et

Telif Hakkı © 2009 - www.extendoffice.com. | Tüm hakları Saklıdır. Tarafından desteklenmektedir ExtendOffice. | | | Site Haritası
Microsoft ve Office logosu, Microsoft Corporation'ın Amerika Birleşik Devletleri ve / veya diğer ülkelerdeki ticari markaları veya tescilli ticari markalarıdır.
Sectigo SSL ile korunmaktadır