Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Rangliste der häufigsten Einträge eines Bereiches

Rangliste der häufigsten Einträge eines Bereiches
11.12.2018 17:23:55
Toljan
Hallo zusammen,
ich bräuchte dringend Hilfe für folgendes Problem:
Ich möchte für einen Bereich mit x Spalten und y Zeilen (in jeder Zelle steht genau ein Wort) ein Ranking für die häufigsten Nennungen erstellen.
Für eine Spalte funktioniert dies mit Hilfe folgender Matrixformel schon sehr gut:
{=WENN(ANZAHL2(A:A)=SUMME(ZÄHLENWENN(A$1:A$200;B$1:B1));ZEICHEN(160);INDEX(A:A; VERGLEICH(KGRÖSSTE(ZÄHLENWENN(A$1:A$200;A$1:A$200);1+SUMME(ZÄHLENWENN(A$1:A$200;B$1:B1))); WENN(ZÄHLENWENN(B$1:B1;A$1:A$200)=0;ZÄHLENWENN(A$1:A$200;A$1:A$200));0))) }
Dies gibt mir in Spalte B ein Top 5 Ranking der meist genannten Wörter in Spalte A Zeile 1-200 wieder.
Kann mir jemand weiterhelfen wie ich diese Formel erweitern kann auf x-Spalten?
Alle meine bisherigen versuche haben nicht zum Ziel geführt.
Vielen Dank schon einmal im Voraus.
Toljan
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit einer Matrixfunktion(alität)sformel ...
11.12.2018 19:53:28
neopa
Hallo Toljan.
... könntest Du das evtl. ermitteln. Und zwar wenn nur die TOP 5 zu ermitteln sind (also nur 5 Formeln), der auszuwertende Bereich wirklich nicht größer ist als max 200 Zeilen und max auch ca. 20 Spalten (besser jeweils viel weniger).
Anderenfalls wird die Berechnung zu langsam. Wenn Dir das so nicht reicht, solltest Du nach einer VBA-Lösung oder auch nach einer PowerQuery-Lösung nachfragen.

Unter vorgenannten Bedingungen
für Daten in A1:X200 folgende Formel z.B. in Z2 (Z1 leer sein oder ein beliebigen anderen Text beinhalten):
=INDEX(A:X;
AGGREGAT(15;6;ZEILE(A$1:A$200)/
(AGGREGAT(14;6;(ZÄHLENWENN(A$1:X$200;A$1:X$200)-ZEILE(A$1:A$200)%%-SPALTE(A1:X1)%)*(ZÄHLENWENN(Z$1:Z1;A$1:X$200)=0);1)=ZÄHLENWENN(A$1:X$200;A$1:X$200)-ZEILE(A$1:A$200)%%-SPALTE(A1:X1)%);1);
AGGREGAT(15;6;SPALTE(A$1:X$1)/
(AGGREGAT(14;6;(ZÄHLENWENN(A$1:X$200;A$1:X$200)-ZEILE(A$1:A$200)%%-SPALTE(A1:X1)%)*(ZÄHLENWENN(Z$1:Z1;A$1:X$200)=0);1)=ZÄHLENWENN(A$1:X$200;A$1:X$200)-ZEILE(A$1:A$200)%%-SPALTE(A1:X1)%);1))

und Formel 4 Zellen nach unten kopieren. Diese werden dann wohl ein paar Sekunden zu rechnen haben.
Gruß Werner
.. , - ...
Anzeige
Es geht auch mit Fmln einfacher, ...
12.12.2018 02:31:25
Luc:-?
…Toljan,
zB so:
Userbild
Diese Auswertungsdaten basieren auf einer BspMatrix mit 20 Zeilen und 10 Spalten, die die 27 Buchstaben­Namen des griechischen RepräsentativZiffernAlfabets in zufälliger Anordnung und Anzahl enthält. Die pluralen MatrixFmln in den 4 Spalten lauten (unsicht­bare grau):
V1:V27: {=SVERWEIS(X1:X27;W1:Y27;3;0)}
W1:W27: {=ZÄHLENWENN($A$18:$J$37;Y1:Y27)+(27-ZEILE(X1:X27))/100}
X1:X27: {=KGRÖSSTE(W1:W27;ZEILE(W1:W27))}
Y1:Y27: {=MTRANS(VSplit(VJoin($A$18:$J$37;;-1)))}
mit Format (V1:W27): Standard
und Format (X1:Y27): # ##0
Die letzte Fml basiert auf der Anwendung 2er VBA-basierter Standard-UDFs aus dem Archiv, die in den neuesten Xl-Versionen inkl Abo-Version 365 ggf durch neue Xl-Fktt ersetzt wdn könnten.
Um den PlatzBedarf zu minimieren und gleichzeitig ein weiteres Bsp für die sinnvolle Anwendung von VerbundZellen zu liefern, wur­den die beiden nicht informationsrelevanten Hilfsspalten jeweils als verborgene 2.SpaltenZelle der beiden zeilenweisen Verbund­Zellen angelegt. Um das zu erreichen, muss für jeden Verbund zuerst ein vorformatiertes leeres Muster per Verbinden über (Verbin­den-Menü!) angelegt wdn. Dieses wird dann mit dem FormatPinsel auf den jeweiligen ErgebnisBereich übertragen.
Feedback nicht unerwünscht! Morhn, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Rangliste der häufigsten Einträge eines Bereiches
12.12.2018 11:51:32
Daniel
Hi
bei VBA-gut folgender Vorschlag:
kopiere dir diesen Code in ein allgemeines Modul:
Function HäufigsteWörter(Bereich) As Variant
Dim dic As Object
Dim X
Dim Worte
Dim Anzahl, A
Dim i As Long
Dim Erg() As String
Set dic = CreateObject("Scripting.dictionary")
'--- Häufigkeiten pro Wort ermitteln
For Each X In Bereich
X = CStr(X)
dic(X) = dic(X) + 1
Next
Worte = dic.keys
Anzahl = dic.Items
'--- Häufigkeit eindeutig machen
For i = 0 To UBound(Anzahl)
Anzahl(i) = Anzahl(i) + 1 / (i + 2)
Next
'--- Ergebnisausgabe
ReDim Erg(1 To Application.Caller.Rows.Count, 1 To Application.Caller.Columns.Count)
For i = 1 To WorksheetFunction.Min(UBound(Erg), dic.Count)
A = WorksheetFunction.Large(Anzahl, i)
Erg(i, 1) = Worte(WorksheetFunction.Match(A, Anzahl, 0) - 1)
If UBound(Erg, 2) > 1 Then Erg(i, 2) = Int(A)
Next
HäufigsteWörter = Erg
End Function
dir steht dann die Funktion "HäufigsteWörter" zur Verfügung.
zur Eingabe:
für die Top5 markiere einen Zellbereich der 5 Zeilen hoch und 2 Spalten breit ist
gib als Formel ein: =HäufigsteWörter(A1:X200)
schließe die Eingabe mit STRG+SHIFT+ENTER ab.
der Zellbereich wird dann mit den Ergebnissen ausgefüllt.
in der ersten Zeile steht das häufigste Wort, in der zweiten das zweithäufigste usw.
in der Spalte daneben steht dann die jeweilige Anzahl.
wenn du die nicht brauchst dann markiere den Zellbereich für die Ergebnisausgabe nur eine Spalte breit.
Diese Formel sollte auch bei größeren Datenmengen zügig berechnet werden.
Gruß Daniel
Anzeige
Hat dir Bernds UDF nicht gefallen? :-] owT
12.12.2018 16:09:21
Luc:-?
:-?
welche von den gezeigten meinst du?
12.12.2018 23:31:50
den
hast du mal versucht, mit seinen UDFs die Aufgabe: Anzeige der 5 häufigsten Werte (nicht alle Werte)
zu erledigen?
AW: Hat dir Bernds UDF nicht gefallen? :-] owT
14.12.2018 18:37:51
Toljan
Hallo Daniel,
vielen Dank für die Hilfe! Diese Option kannte ich noch nicht.
Perfekte Lösung für das Problem!!
Gruß Toljan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Rangliste der häufigsten Einträge in Excel erstellen


Schritt-für-Schritt-Anleitung

Um in Excel eine Rangliste der häufigsten Einträge eines Bereiches zu erstellen, kannst Du verschiedene Methoden nutzen. Hier ist eine Schritt-für-Schritt-Anleitung, die eine Matrixformel sowie VBA-Optionen beschreibt.

  1. Vorbereitung der Daten: Stelle sicher, dass Deine Daten in einem zusammenhängenden Bereich stehen, z.B. A1:X200.

  2. Matrixformel für die häufigsten Werte:

    • Gib in Zelle B1 folgende Matrixformel ein (beachte, dass Du die Formel mit STRG + SHIFT + ENTER bestätigen musst):
      {=WENN(ANZAHL2(A:A)=SUMME(ZÄHLENWENN(A$1:A$200;B$1:B1));ZEICHEN(160);INDEX(A:A;VERGLEICH(KGRÖSSTE(ZÄHLENWENN(A$1:A$200;A$1:A$200);1+SUMME(ZÄHLENWENN(A$1:A$200;B$1:B1)));WENN(ZÄHLENWENN(B$1:B1;A$1:A$200)=0;ZÄHLENWENN(A$1:A$200;A$1:A$200));0)))}
    • Kopiere diese Formel vier weitere Zellen nach unten (B2 bis B5), um die Top 5 häufigsten Wörter zu ermitteln.
  3. VBA-Methode:

    • Öffne den VBA-Editor (ALT + F11), füge ein neues Modul ein und kopiere folgenden Code:
      Function HäufigsteWörter(Bereich) As Variant
       Dim dic As Object
       Dim X
       Dim Worte
       Dim Anzahl, A
       Dim i As Long
       Dim Erg() As String
       Set dic = CreateObject("Scripting.dictionary")
       For Each X In Bereich
           X = CStr(X)
           dic(X) = dic(X) + 1
       Next
       Worte = dic.keys
       Anzahl = dic.Items
       For i = 0 To UBound(Anzahl)
           Anzahl(i) = Anzahl(i) + 1 / (i + 2)
       Next
       ReDim Erg(1 To Application.Caller.Rows.Count, 1 To Application.Caller.Columns.Count)
       For i = 1 To WorksheetFunction.Min(UBound(Erg), dic.Count)
           A = WorksheetFunction.Large(Anzahl, i)
           Erg(i, 1) = Worte(WorksheetFunction.Match(A, Anzahl, 0) - 1)
           If UBound(Erg, 2) > 1 Then Erg(i, 2) = Int(A)
       Next
       HäufigsteWörter = Erg
      End Function
    • Du kannst die Funktion verwenden, indem Du in einen Zellbereich der Größe 5x2 die folgende Formel eingibst:
      =HäufigsteWörter(A1:X200)
    • Bestätige die Eingabe wieder mit STRG + SHIFT + ENTER.

Häufige Fehler und Lösungen

  • Fehler bei der Matrixformel: Wenn Du eine Fehlermeldung erhältst, stelle sicher, dass Du die Eingabe mit STRG + SHIFT + ENTER abgeschlossen hast.
  • Langsame Berechnungen: Bei großen Datenmengen kann die Berechnung sehr langsam werden. Reduziere den Bereich (z.B. auf 100 Zeilen) oder verwende die VBA-Methode.
  • Falsche Ergebnisse: Stelle sicher, dass alle Zellen im Bereich keine leeren Werte enthalten, da dies das Ergebnis verfälschen kann.

Alternative Methoden

  1. Power Query: Eine weitere Möglichkeit, häufigste Werte in Excel zu ermitteln, ist die Verwendung von Power Query. Du kannst die Daten importieren, transformieren und dann eine Abfrage erstellen, um die häufigsten Einträge zu zählen.

  2. Pivot-Tabellen: Erstelle eine Pivot-Tabelle, um die Häufigkeit der Einträge zu zählen und dann die Ergebnisse nach Häufigkeit zu sortieren.


Praktische Beispiele

  • Beispiel 1: Angenommen, Du hast in Spalte A Namen von Teilnehmern einer Veranstaltung. Mit der Formel in Zelle B1 kannst Du den häufigsten Namen ermitteln.
  • Beispiel 2: In einem Bereich mit Verkaufszahlen kannst Du den häufigsten Verkaufsartikel mit der VBA-Funktion HäufigsteWörter ermitteln.

Tipps für Profis

  • Nutze die Funktion AGGREGAT in Kombination mit KGRÖSSTE, um flexibler mit den Daten umzugehen.
  • Bei großen Datenmengen, ziehe in Betracht, Deine Daten in kleinere Bereiche aufzuteilen, um die Leistung zu steigern.
  • Halte Deine Formeln so einfach wie möglich, um die Lesbarkeit und Wartbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich den häufigsten Wert in einer Spalte ermitteln? Verwende die Formel =INDEX(A:A;VERGLEICH(MAX(ZÄHLENWENN(A:A;A:A));ZÄHLENWENN(A:A;A:A);0)).

2. Was ist der Unterschied zwischen der Matrixformel und der VBA-Methode? Die Matrixformel ist direkt in Excel anwendbar, während die VBA-Methode mehr Flexibilität und eine benutzerdefinierte Funktion bietet, die sich besser für große Datenmengen eignet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige