Ich habe eine Liste mit etwa 5.000 Zeilen und möchte die Vorkommen jedes Elements zählen.
Diese Liste enthält etwa 300 bis 400 verschiedene Elemente.
Anstatt über 300 einzigartige Formeln einzutippen, die aussehen wie
=COUNTIF(A1:A5000,"A")
=COUNTIF(A1:A5000,"B")
=COUNTIF(A1:A5000,"C")
=COUNTIF(A1:A5000,"D")
=COUNTIF(A1:A5000,"E")
ETC to 300...
, gibt es eine Möglichkeit, dieses Ziel mit einer Art verbesserter Formel zu erreichen?
Unten sehen Sie ein Listenbeispiel, das ich aus einer zuvor geposteten Frage übernommen habe, da es veranschaulicht, was ich erreichen möchte. In meinem Fall habe ich jedoch 300 bis 400 verschiedene Elemente, nicht nur A, B, C, D und E:
„Ich habe eine Liste mit Elementen, die so aussieht:“
A
B
C
A
A
B
D
E
A
„Jetzt möchte ich die Anzahl der Vorkommen jedes Elements zählen. Das Ergebnis sollte folgendermaßen aussehen:“
A 4
B 2
C 1
D 1
E 1
Dank geht an RoflcoptrException für das Posten der ursprünglichen Frage.
Antwort1
Eine einfache Möglichkeit hierzu besteht darin, die Werte beispielsweise in eine Textdatei zu exportieren f.txt
und das folgende .bat
Skript im selben Ordner auszuführen:
@echo off
setlocal
rem Accumulate each occurrence in its corresponding array element
for /F %%a in (f.txt) do set /A "[%%a]+=1"
rem Show the result
for /F %%a in ('set [') do echo %%a
Wenn Sie es auf Ihren Beispieldaten ausführen, wird Folgendes zurückgegeben:
Antwort2
Anstelle einer Formel möchte ich die schnellste Methode vorschlagen, nämlich VBA Macro
das Zählen des Vorkommens verschiedener Elemente.
Wie es funktioniert:
Um eine eindeutige Liste der zu zählenden Elemente zu erstellen, verwenden Sie die Array-Formel (CSE) in der Zelle
C68
:{=IFERROR(INDEX($A$68:$A$78, MATCH(0,COUNTIF($C$67:C67, $A$68:$A$78), 0)),"")}
Beenden Sie die Formel mitStrg+Umschalt+Eingabe& Abfüllen.
Drücken Sie entwederAlt+F11oderRKlicken Sie mit der rechten Maustaste auf das Blatt TAB und drücken SieVCode anzeigen.
Im VB-Editorfenster vonICHnsert Befehl klickenMModul.
Copy &Paste diesen Code.
Public Function CountString(SearchFor As String, InRange As Range) As Long Dim wbcs As Long, rng As Range, addr As String For Each s In Worksheets addr = InRange.Address Set rng = s.Range(addr) wbcs = wbcs + Application.WorksheetFunction.CountIf(rng, "*" & SearchFor & "*") Next s CountString = wbcs End Function
Arbeitsmappe mit aktiviertem Makro (.xlsm) speichern.
Geben Sie diese Formel in die Zelle ein
D68
und füllen Sie sie aus:
=CountString($C68,A$68:A$78)
- Um das Vorkommen in mehreren Spalten zu zählen, können Sie eine Formel wie diese verwenden.
=CountString($C68,A:C)
Passen Sie die Zellbezüge in der Formel nach Bedarf an.