Benzersiz Değerleri Saymak için Basit Pivot Tablosu


134

Bu, öğrenmek için basit bir Pivot Tablosu gibi görünüyor. Üzerinde gruplandığım belirli bir değer için benzersiz değerlerin sayımı yapmak istiyorum.

Örneğin, ben var:

ABC   123
ABC   123
ABC   123
DEF   456
DEF   567
DEF   456
DEF   456

Ne istediğini bana gösteren bir pivot tablo:

ABC   1
DEF   2

Oluşturduğum basit pivot tablo bana bunu (kaç satırlık bir sayı) verir:

ABC   3
DEF   4  

Ama bunun yerine benzersiz değerlerin sayısını istiyorum.

Gerçekten yapmaya çalıştığım ilk sütundaki hangi değerlerin tüm sütunlar için ikinci sütunda aynı değere sahip olmadığını bulmak. Başka bir deyişle, "ABC" "iyi", "DEF" "kötü"

Eminim bunu yapmanın daha kolay bir yolu var ama pivot tabloyu denemek istedim


8
Excel'in son sürümleri için bu cevabın en uygun olduğunu unutmayın.
Dennis Jaheruddin

Yanıtlar:


108

3. sütun ekleyin ve C2Hücre'ye bu formülü yapıştırın

=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)

ve kopyalayın. Şimdi pivotunuzu 1. ve 3. sütuna göre oluşturun. Anlık görüntüye bakın

resim açıklamasını buraya girin


+1 Bence bu benim çözümümden biraz daha kolay çünkü ilk satır için özel bir değer gerektirmiyor
lc.

2
Güzel teknik. Bunu bilmiyordum. Aynı işlemi bir dizi işlevi ile de yapabilirsiniz =IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)(formülü girerken Ctrl-Shift-Enter tuşlarına basın, böylece {}çevresini elde eder).
ErikE

Belirli bir özellik gerektirmeyen evrensel cevap. Sadece iyi düz formüller.
Alberto De Caro

Bunu üç sütunlu bir duruma nasıl genişleteceğiniz hakkında bir fikriniz var mı?
tumultous_rooster

13
Pivot Tablo seçeneklerini kullanarak bazı satırları filtrelerseniz bu cevabın doğru çözümü VERemeyeceğini unutmayın. Diyelim ki ilk satır filtrelendi. ABC'lerin toplamı 0 olarak görünecektir!
jarlemag

250

GÜNCELLEME: Bunu şimdi otomatik olarak Excel 2013 ile yapabilirsiniz. Önceki yanıtım aslında biraz farklı bir sorunu çözdüğü için bunu yeni bir yanıt olarak oluşturdum.

Bu sürüme sahipseniz, bir pivot tablo oluşturmak için verilerinizi seçin ve tablonuzu oluştururken, 'Bu verileri Veri Modeline Ekle' onay kutusunun işaretli olduğundan emin olun (aşağıya bakın).

'Bu verileri Veri Modeline ekle' seçeneğinin yanındaki kutuyu işaretleyin

Ardından, pivot tablonuz açıldığında, satırlarınızı, sütunlarınızı ve değerlerinizi normal şekilde oluşturun. Ardından, farklı sayısını hesaplamak istediğiniz alanı tıklayın ve Alan Değeri Ayarlarını düzenleyin: Alan değeri ayarlarını düzenleme

Son olarak, en son seçeneğe gidin ve 'Farklı Sayım'ı seçin. 'Farklı Sayım' seçeneğini seçin

Bu, pivot tablo değerlerinizi aradığınız verileri gösterecek şekilde güncellemelidir.


5
Excel 2013 varsa, çok daha iyi @MichaelK
jrharshath

3
Bu, mevcut pivot tablolara da yapılabilir, bu nedenle farklı sayım işlevlerine erişmek için 200+ tabloyu yeniden oluşturmamız gerekmez mi?
Louisa

12
Yalnızca bir FYI: dosyanızı henüz bir Excel (.xlsx) dosyası olarak kaydetmediyseniz (örn. Bir .csv dosyası açtınız), "Bu verileri Veri Modeline Ekle" seçeneği devre dışı bırakılır / gri renkte görünür . Basit çözüm dosyayı bir Excel dosyası olarak kaydetmek.
PonyEars

9
Mac'te desteklenmiyor mu? Bu seçenek benim için görünmüyor. 15.27 sürümündeyim.
jkupczak

4
Genelde Veri Modelleri yalnızca Windows özelliği olduğundan, bu seçenek bir Mac'te mevcut değildir.
Tomty

10

Formül gerektirmeyen ancak iki farklı sütun arasında kümedeki benzersiz değerleri saymanız gerektiğinde yardımcı olabilecek ek bir seçenek atmak istiyorum. Orijinal örneği kullanarak, ben yoktu:

ABC   123  
ABC   123  
ABC   123   
DEF   456  
DEF   567  
DEF   456  
DEF   456

ve şu şekilde görünmesini istersiniz:

ABC   1  
DEF   2

Ama daha fazlası gibi:

ABC   123  
ABC   123  
ABC   123  
ABC   456  
DEF   123  
DEF   456  
DEF   567  
DEF   456  
DEF   456

ve şu şekilde görünmesini istedim:

ABC  
   123    3  
   456    1  
DEF  
   123    1  
   456    3  
   567    1

Verilerimi bu formata almak için en iyi yolu buldum ve daha sonra manipüle edebilmek için aşağıdakileri kullanmak oldu:

resim açıklamasını buraya girin

'Toplam yayınlanıyor' seçeneğini belirledikten sonra ikincil veri kümesi için başlığı seçin (bu durumda 123, 456 ve 567'yi içeren veri kümesinin üstbilgisi veya sütun başlığı olur). Bu, birincil veri kümenizdeki bu gruptaki toplam öğe sayısıyla maksimum bir değer verir.

Daha sonra bu verileri kopyaladım, değerler olarak yapıştırdım, sonra daha kolay işlemek için başka bir pivot tabloya koydum.

FYI, yaklaşık çeyrek milyon veri satırım vardı, bu yüzden bazı formül yaklaşımlarından çok daha iyi çalıştı, özellikle de uygulamayı kilitlemeye devam ettiği için iki sütun / veri kümesinde karşılaştırmaya çalışanlar.


Tamamen farklı bir sorunum vardı, ama bu cevap beni doğru yönde gösterdi. Teşekkürler.
jtolle

Bu cevap formülü uygulamak için gereken 500.000 satır var ve eğer çalışıyorum bilgisayarımın belleği tükeniyor gibi benim ihtiyacım uyuyor. teşekkür ederim!
cauldyclark

6

En kolay yaklaşımın Distinct Countaltındaki seçeneği kullanmak olduğunu gördüm Value Field Settings( bölmedeki alanı sol tıklayın Values). İçin seçenek Distinct Countlistenin en altındadır.

Tıklanacak yer

İşte önce (TOP; normal Count) ve sonra (BOTTOM; Distinct Count)

MİKTAR

İLÇE SAYISI


3
Office 2016'dan itibaren: Bu özelliği kullanabilmek için "Bu verileri Veri Modeline Ekle" işaretli bir pivot tablo oluşturulmalıdır.
Leo


3

Aşağıdaki formül için tablonun sıralanması, mevcut her bir benzersiz değer için 1 döndürmek zorunda değildir.

soruda sunulan veriler için tablo aralığının A1: B7 olduğunu varsayarak, C1 hücresine aşağıdaki formülü girin:

=IF(COUNTIF($B$1:$B1,B1)>1,0,COUNTIF($B$1:$B1,B1))

Bu formülü tüm satırlara kopyaladığınızda son satır aşağıdakileri içerir:

=IF(COUNTIF($B$1:$B7,B7)>1,0,COUNTIF($B$1:$B7,B7))

Bu, ilk kez bir kayıt bulunduğunda 1 ve sonraki tüm zamanlar için 0 döndürülür.

Pivot tablonuzdaki sütunu toplamanız yeterlidir


2
Büyük bir veri =IF(COUNTIF($B$1:$B1,B1),1,0)kümeniz varsa , kullanın - bu şekilde countif yalnızca bir kez çalıştırılır!
Peter Albert

2

Bu soruna yaklaşımım burada gördüğümden biraz farklıydı, bu yüzden paylaşacağım.

  1. (Önce verilerinizin bir kopyasını oluşturun)
  2. Sütunları birleştirin
  3. Birleştirilmiş sütundaki kopyaları kaldır
  4. Son - ortaya çıkan sette pivot

Not: Bunu daha kolay anlaşılmasını sağlamak için resimler eklemek istiyorum, ancak cant çünkü bu benim ilk yazım;)


1

Siddharth'ın yanıtı müthiş.

Ancak , bu teknik büyük bir veri kümesiyle çalışırken sorun yaratabilir (bilgisayarım 50.000 satırda donmuştu). İşlemciyi daha az kullanan bazı yöntemler:

Tek benzersizlik kontrolü

  1. İki sütuna göre sırala (bu örnekte A, B)
  2. Daha az veriye bakan bir formül kullanın

    =IF(SUMPRODUCT(($A2:$A3=A2)*($B2:$B3=B2))>1,0,1) 
    

Birden fazla benzersizlik kontrolü

Farklı sütunlardaki benzersizliği kontrol etmeniz gerekirse, iki türe güvenemezsiniz.

Yerine,

  1. Tek sütunu sırala (A)
  2. Her gruplama için maksimum kayıt sayısını kapsayan formül ekleyin. ABC'de 50 satır varsa, formül

    =IF(SUMPRODUCT(($A2:$A49=A2)*($B2:$B49=B2))>1,0,1)
    

2
Muhtemelen daha az işlemci yoğunluğu olan başka bir yol da C ve C2 sütunları eklemektir =A2&B2. Sonra bir sütun D ekleyin ve D2 koyun =IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0). Her ikisini de doldurun. Bu, tüm aralığın başlangıcından itibaren arama yaparken, birincisini bulduğunda durur ve 50.000 satırdan değerleri çarpmak yerine, sadece değeri bulmak zorundadır - bu yüzden çok daha iyi performans göstermelidir.
ErikE

@ErikE Sharp - Sanırım tekniğiniz ilk buluşta duruyor. Ancak C'de çok fazla benzersiz değeriniz varsa (örnek: yalnızca 50 ABC), büyük miktarda veriyi kontrol etmeye devam edersiniz. Harika özellik: Verileriniz ayrıştırıldığında formülünüz en iyi sonucu verir.
workglide

1

Excel 2013, pivotlarda farklı sayım yapabilir. 2013'e erişim yoksa ve bu daha az miktarda veri içeriyorsa, ham verilerin iki kopyasını alıyorum ve b kopyasında, her iki sütunu da seçin ve kopyaları kaldırın. Sonra pivotu oluşturun ve sütununuzu sayın b.


1

Birden fazla ölçüt için COUNTIFS kullanabilirsiniz,

= 1 / COUNTIFS (A: A, A2, B: B, B2) ve ardından aşağı sürükleyin. Orada istediğiniz kadar ölçüt koyabilirsiniz, ancak işlenmesi çok zaman alır.


1

1. Adım. Sütun ekleyin

Adım 2.IF(COUNTIF(C2:$C$2410,C2)>1,0,1) İlk kayıtta = formülünü kullanın

Adım 3. Tüm kayıtlara sürükleyin

4. Adım. '1' sütununu formülle filtreleyin


0

Benzersizliği saklamak için ek bir sütun oluşturabilir, ardından bunu pivot tablonuzda toplayabilirsiniz .

Demek istediğim, hücre C1her zaman olmalı 1. Hücre C2formülü içermelidir =IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1). Hücre C3içerecek =IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)ve benzeri için bu formülü kopyalayın .

Bir başlık hücreniz varsa, bunları bir satır aşağı taşımak istersiniz ve C3formülünüz olmalıdır =IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1).


0

Verileri sıralanmış varsa .. ben aşağıdaki formülü kullanmanızı öneririz

=IF(OR(A2<>A3,B2<>B3),1,0)

Hesaplamak için daha az hücre kullandığı için bu daha hızlıdır.


0

Genellikle veriyi farklı alanlara göre yapmam gereken alana göre sıralarım ve sonra IF (A2 = A1,0,1); daha sonra her bir kimlik grubunun en üst satırında 1 elde edersiniz. Basit ve büyük veri kümelerinde hesap yapmak hiç zaman almaz.


0

Yardımcı sütun için de kullanabilirsiniz VLOOKUP. Test ettim ve biraz daha hızlı görünüyor COUNTIF.

Üstbilgi kullanıyorsanız ve veriler hücrede başlıyorsa, A2satırdaki herhangi bir hücrede bu formülü kullanın ve aynı sütundaki diğer tüm hücrelere kopyalayın:

=IFERROR(IF(VLOOKUP(A2;$A$1:A1;1;0)=A2;0;1);1)

-3

Bunu yapmanın daha kolay bir yolunu buldum. A sütunundaki benzersiz değerleri saymak istersem Siddarth Rout örneğine bakalım:

  • yeni bir C sütunu ekleyin ve C2'yi "= 1 / COUNTIF ($ A: $ A, A2)" formülüyle doldurun
  • formülü sütunun geri kalanına sürükleyin
  • A sütunundaki benzersiz değerlerin sayısını elde etmek için satır sütunu olarak A sütununu ve Sum {sütun C) değerlerini döndürün

Mantıksal olarak bu OP için işe yaramaz çünkü sütuna bakmaz B. Bunu birden çok sütunla çalışacak şekilde nasıl uyarlayacaksınız?
ErikE
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.