Einfache Pivot-Tabelle zum Zählen eindeutiger Werte


134

Dies scheint eine einfache Pivot-Tabelle zu sein, mit der man lernen kann. Ich möchte für einen bestimmten Wert, den ich gruppiere, eindeutige Werte zählen.

Zum Beispiel habe ich Folgendes:

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

Was ich möchte, ist eine Pivot-Tabelle, die mir Folgendes zeigt:

ABC   1
DEF   2

Die einfache Pivot-Tabelle, die ich erstelle, gibt mir nur Folgendes (Anzahl der Zeilen):

ABC   3
DEF   4  

Aber ich möchte stattdessen die Anzahl der eindeutigen Werte.

Ich versuche wirklich herauszufinden, welche Werte in der ersten Spalte nicht für alle Zeilen den gleichen Wert in der zweiten Spalte haben. Mit anderen Worten, "ABC" ist "gut", "DEF" ist "schlecht"

Ich bin mir sicher, dass es einen einfacheren Weg gibt, aber ich dachte, ich würde es mit dem Pivot-Tisch versuchen ...


8
Beachten Sie, dass diese Antwort für neuere Excel-Versionen am bequemsten ist.
Dennis Jaheruddin

Antworten:


108

Fügen Sie eine dritte Spalte ein und C2fügen Sie diese Formel in Zelle ein

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

und kopiere es nach unten. Erstellen Sie nun Ihren Pivot basierend auf der 1. und 3. Spalte. Siehe Schnappschuss

Geben Sie hier die Bildbeschreibung ein


+1 Ich denke, dies ist etwas einfacher als meine Lösung, da für die erste Zeile kein spezieller Wert erforderlich ist
lc.

2
Schöne Technik. Ich wusste nichts davon. Sie können dasselbe mit einer Array-Funktion tun =IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)(drücken Sie Strg-Umschalt-Eingabetaste, wenn Sie die Formel eingeben, damit sie {}um sie herum erfasst wird).
ErikE

Universelle Antwort, für die keine spezielle Funktion erforderlich ist. Nur gute einfache Formeln.
Alberto De Caro

Haben Sie eine Idee, wie Sie dies auf eine Situation mit drei Spalten ausweiten können?
tumultous_rooster

13
Beachten Sie, dass diese Antwort NICHT die richtige Lösung liefert, wenn Sie einige der Zeilen mithilfe der Pivot-Tabellenoptionen herausfiltern. Angenommen, die erste Zeile wird herausgefiltert. Die Summe der ABCs erscheint dann 0!
Jarlemag

250

UPDATE: Sie können dies jetzt automatisch mit Excel 2013 tun. Ich habe dies als neue Antwort erstellt, da meine vorherige Antwort tatsächlich ein etwas anderes Problem löst.

Wenn Sie über diese Version verfügen, wählen Sie Ihre Daten aus, um eine Pivot-Tabelle zu erstellen. Wenn Sie Ihre Tabelle erstellen, stellen Sie sicher, dass das Kontrollkästchen "Diese Daten zum Datenmodell hinzufügen" aktiviert ist (siehe unten).

Aktivieren Sie das Kontrollkästchen neben "Diese Daten zum Datenmodell hinzufügen".

Wenn Ihre Pivot-Tabelle geöffnet wird, erstellen Sie Ihre Zeilen, Spalten und Werte normal. Klicken Sie dann auf das Feld, für das Sie die eindeutige Anzahl berechnen möchten, und bearbeiten Sie die Feldwerteinstellungen: Feldwerteinstellungen bearbeiten

Scrollen Sie abschließend bis zur letzten Option und wählen Sie "Distinct Count". Wählen Sie die Option 'Distinct Count'

Dadurch sollten Ihre Pivot-Tabellenwerte aktualisiert werden, um die gesuchten Daten anzuzeigen.


5
@ MichaelK es ist viel besser, wenn Sie Excel 2013 haben
jrharshath

3
Kann dies auch für vorhandene Pivot-Tabellen durchgeführt werden, sodass wir nicht mehr als 200 Tabellen neu erstellen müssen, um Zugriff auf die Funktionen für unterschiedliche Zählungen zu erhalten?
Louisa

12
Nur zu Ihrer Information: Wenn Sie Ihre Datei noch nicht als Excel-Datei (.xlsx) gespeichert haben (z. B. Sie haben eine CSV-Datei geöffnet), ist die Option "Diese Daten zum Datenmodell hinzufügen" deaktiviert / ausgegraut . Die einfache Lösung besteht darin, die Datei als Excel-Datei zu speichern.
PonyEars

9
Wird dies auf dem Mac nicht unterstützt? Diese Option erscheint mir nicht. Ich bin auf Version 15.27.
jkupczak

4
Diese Option gibt es auf einem Mac in der Tat nicht, da Datenmodelle im Allgemeinen nur für Windows verfügbar sind.
Tomty

10

Ich möchte eine zusätzliche Option in den Mix einfügen, für die keine Formel erforderlich ist, die jedoch hilfreich sein kann, wenn Sie eindeutige Werte innerhalb des Satzes in zwei verschiedenen Spalten zählen müssen. Mit dem ursprünglichen Beispiel hatte ich nicht:

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

und möchte, dass es wie folgt erscheint:

ABC   1  
DEF   2

Aber eher so etwas wie:

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

und wollte, dass es erscheint als:

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

Ich habe den besten Weg gefunden, meine Daten in dieses Format zu bringen und sie dann weiter zu bearbeiten, indem ich Folgendes verwendet habe:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie "Running total in" ausgewählt haben, wählen Sie den Header für den sekundären Datensatz aus (in diesem Fall ist dies der Header- oder Spaltentitel des Datensatzes, der 123, 456 und 567 enthält). Dadurch erhalten Sie einen Maximalwert mit der Gesamtzahl der Elemente in diesem Satz innerhalb Ihres Primärdatensatzes.

Ich habe diese Daten dann kopiert, als Werte eingefügt und dann in eine andere Pivot-Tabelle eingefügt, um sie einfacher zu bearbeiten.

Zu Ihrer Information, ich hatte ungefähr eine Viertelmillion Datenzeilen, daher funktionierte dies viel besser als einige der Formelansätze, insbesondere diejenigen, die versuchen, zwei Spalten / Datensätze zu vergleichen, weil die Anwendung immer wieder abstürzt.


Ich hatte ein ganz anderes Problem, aber diese Antwort zeigte mir nur die richtige Richtung. Vielen Dank.
jtolle

Diese Antwort entspricht meinem Bedarf, da ich 500.000 Zeilen habe, die ich zum Anwenden der Formel benötige, und meinem Computer der Speicher ausgeht, wenn ich es versuche. Danke!
Cauldyclark

6

Ich fand, dass der einfachste Ansatz darin besteht, die Distinct CountOption unter zu verwenden Value Field Settings( klicken Sie mit der linken Maustaste auf das Feld im Bereich Values). Die Option für Distinct Countbefindet sich ganz unten in der Liste.

Ort, an dem geklickt werden soll

Hier sind die Vorher (TOP; normal Count) und Nachher (UNTEN; Distinct Count)

ANZAHL

DISTINCT COUNT


3
Ab Office 2016: Um diese Funktion verwenden zu können, sollte die Pivot-Tabelle mit aktiviertem Kontrollkästchen "Diese Daten zum Datenmodell hinzufügen" erstellt werden.
Leo


3

Es ist nicht erforderlich, dass die Tabelle sortiert wird, damit die folgende Formel für jeden vorhandenen eindeutigen Wert eine 1 zurückgibt.

Angenommen, der Tabellenbereich für die in der Frage dargestellten Daten ist A1: B7 Geben Sie die folgende Formel in Zelle C1 ein:

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

Kopieren Sie diese Formel in alle Zeilen und die letzte Zeile enthält:

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

Dies führt dazu, dass beim ersten Auffinden eines Datensatzes eine 1 und danach für alle Zeiten eine 0 zurückgegeben wird.

Summieren Sie einfach die Spalte in Ihrer Pivot-Tabelle


2
=IF(COUNTIF($B$1:$B1,B1),1,0)Wenn Sie einen großen Datensatz haben, verwenden Sie - auf diese Weise wird countif nur einmal ausgeführt!
Peter Albert

2

Meine Herangehensweise an dieses Problem war etwas anders als die, die ich hier sehe, also werde ich teilen.

  1. (Machen Sie zuerst eine Kopie Ihrer Daten)
  2. Verketten Sie die Spalten
  3. Entfernen Sie Duplikate in der verketteten Spalte
  4. Letzter Drehpunkt auf dem resultierenden Satz

Hinweis: Ich möchte Bilder einfügen, um dies noch verständlicher zu machen, kann es aber nicht, da dies mein erster Beitrag ist;)


1

Siddharths Antwort ist großartig.

Diese Technik kann jedoch Probleme verursachen, wenn Sie mit einer großen Datenmenge arbeiten (mein Computer ist in 50.000 Zeilen eingefroren). Einige weniger prozessorintensive Methoden:

Einzelne Eindeutigkeitsprüfung

  1. Sortieren nach den beiden Spalten (A, B in diesem Beispiel)
  2. Verwenden Sie eine Formel, die weniger Daten berücksichtigt

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

Mehrere Eindeutigkeitsprüfungen

Wenn Sie die Eindeutigkeit in verschiedenen Spalten überprüfen müssen, können Sie sich nicht auf zwei Sortierungen verlassen.

Stattdessen,

  1. Einzelne Spalte sortieren (A)
  2. Fügen Sie eine Formel hinzu, die die maximale Anzahl von Datensätzen für jede Gruppierung abdeckt. Wenn ABC 50 Zeilen haben könnte, lautet die Formel

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

2
Eine andere möglicherweise weniger prozessorintensive Methode ist das Hinzufügen einer Spalte C und in C2 =A2&B2. Fügen Sie dann eine Spalte D hinzu und setzen Sie sie in D2 =IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0). Füllen Sie beide aus. Während dies immer noch vom Anfang des gesamten Bereichs an sucht, stoppt es, wenn es den ersten findet, und anstatt die Werte aus 50.000 Zeilen miteinander zu multiplizieren, muss es nur den Wert lokalisieren - daher sollte es eine viel bessere Leistung erzielen.
ErikE

@ErikE Sharp - Ich denke auch, dass Ihre Technik beim ersten Fund aufhört. Wenn Sie jedoch viele eindeutige Werte in C haben (Beispiel: nur 50 ABCs), werden Sie weiterhin große Datenmengen überprüfen. Coole Funktion: Ihre Formel funktioniert am besten, wenn die Daten unsortiert sind.
Workglide

1

Excel 2013 kann in Pivots unterschiedlich zählen. Wenn kein Zugriff auf 2013 vorliegt und die Datenmenge geringer ist, erstelle ich zwei Kopien der Rohdaten. Wählen Sie in Kopie b beide Spalten aus und entfernen Sie Duplikate. Dann machen Sie den Drehpunkt und zählen Sie Ihre Spalte b.


1

Sie können COUNTIFS für mehrere Kriterien verwenden.

= 1 / COUNTIFS (A: A, A2, B: B, B2) und dann nach unten ziehen. Sie können dort so viele Kriterien eingeben, wie Sie möchten, die Verarbeitung dauert jedoch in der Regel sehr lange.


1

Schritt 1. Fügen Sie eine Spalte hinzu

Schritt 2. Verwenden Sie die Formel = IF(COUNTIF(C2:$C$2410,C2)>1,0,1)im 1. Datensatz

Schritt 3. Ziehen Sie es auf alle Datensätze

Schritt 4. Filtern Sie '1' in der Spalte mit der Formel


0

Sie können eine zusätzliche Spalte erstellen, um die Eindeutigkeit zu speichern, und diese dann in Ihrer Pivot-Tabelle zusammenfassen.

Was ich meine ist, Zelle C1sollte immer sein 1. Die Zelle C2sollte die Formel enthalten =IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1). Kopieren Sie diese Formel nach unten, damit die Zelle C3sie enthält =IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)und so weiter.

Wenn Sie eine Kopfzelle haben, möchten Sie diese alle in einer Reihe nach unten verschieben, und Ihre C3Formel sollte lauten =IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1).


0

Wenn Sie die Daten sortiert haben, schlage ich vor, die folgende Formel zu verwenden

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

Dies ist schneller, da weniger Zellen zur Berechnung verwendet werden.


0

Normalerweise sortiere ich die Daten nach dem Feld, in dem ich die eindeutige Zählung durchführen muss, und verwende dann IF (A2 = A1,0,1). Sie erhalten dann eine 1 in der oberen Reihe jeder Gruppe von IDs. Einfach und nimmt keine Zeit in Anspruch, um große Datenmengen zu berechnen.


0

Sie können auch für die Hilfsspalte verwenden VLOOKUP. Ich habe getestet und sieht ein bisschen schneller aus als COUNTIF.

Wenn Sie den Header verwenden und die Daten in der Zelle beginnen A2, verwenden Sie in jeder Zelle in der Zeile diese Formel und kopieren Sie sie in alle anderen Zellen in derselben Spalte:

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

-3

Ich habe einen einfacheren Weg gefunden, dies zu tun. Bezugnehmend auf das Beispiel von Siddarth Rout, wenn ich eindeutige Werte in Spalte A zählen möchte:

  • Fügen Sie eine neue Spalte C hinzu und füllen Sie C2 mit der Formel "= 1 / COUNTIF ($ A: $ A, A2)".
  • Ziehen Sie die Formel nach unten in den Rest der Spalte
  • Pivot mit Spalte A als Zeilenbezeichnung und Summe {Spalte C) in Werten, um die Anzahl der eindeutigen Werte in Spalte A zu erhalten

Logischerweise kann dies für das OP unmöglich funktionieren, da es keine Spalte betrachtet B. Wie werden Sie dies anpassen, um mit mehreren Spalten zu arbeiten?
ErikE
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.