Live-Forum - Die aktuellen Beiträge
Datum
Titel
25.06.2025 06:38:35
24.06.2025 22:11:12
24.06.2025 21:29:43
24.06.2025 19:48:50
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Häufigkeit verschiedener Namen

Forumthread: Häufigkeit verschiedener Namen

Häufigkeit verschiedener Namen
08.05.2002 19:13:06
Ingo J.
Hallo,

ich habe eine für mich ziemlich schwere Aufgabe und hoffe mir kann jemand helfen.Und zwar sind in meiner Tabelle, die ziemlich groß ist (99 Spalten und 2500 Zeilen), in der Spalte Y mehrere verschiedene Namen. Nun möchte ich das daneben,also in Spalte CV, die Namen aufgelistes werden (jeweils einmal)und daneben wie oft diese in der Tabelle vorkommen. Damit ich dann ein Diagramm daraus bilden kann. Eine Makrolösung wäre mir hier am liebsten.
Ich hoffe es findet sich jemand der mir helfen kann.

Im voraus schon mal Danke

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Häufigkeit verschiedener Namen
09.05.2002 01:02:44
th.heinrich
hallo Ingo,

werde aus Deinem posting nicht schlau.

>>in der Spalte Y mehrere verschiedene Namen. Nun möchte ich das daneben,also in Spalte CV, die Namen aufgelistes werden (jeweils einmal)und daneben wie oft diese in der Tabelle vorkommen. >>

nach welchen KRITERIEN sollen die namen aufgelistet werden ?

kannst Du einen auszug aus Deiner tabelle posten.

gruss thomas

Anzeige
Re: Häufigkeit verschiedener Namen
09.05.2002 07:25:03
Ingo J.
Hallo Thomas,

hier ein Beispiel

Spalte_A-X|Spalte_Y|Spalte _Z-CU|Spalte_CV|Spalte_CW
div Daten_|_Holger_|_div. Daten_|_leer____|_leer
div Daten_|_Jens___|_div. Daten_|_leer____|_leer
div Daten_|_Holger_|_div. Daten_|_leer____|_leer
div Daten_|_Holger_|_div. Daten_|_leer____|_leer
div Daten_|_Ralf___|_div. Daten_|_leer____|_leer
div Daten_|_Claudia|_div. Daten_|_leer____|_leer
div Daten_|_Jens___|_div. Daten_|_leer____|_leer

so ungefähr sieht die tabelle aus, nur sind es noch mehr Namen ca. 50 und die Tabelle weiterzuführen würde hier den Rahmen sprengen.
So und nun möchte ich das es zum schluss wie folgt aussieht:

Spalte_A-X|Spalte_Y|Spalte _Z-CU|Spalte_CV|Spalte_CW
div Daten_|_Holger_|_div. Daten_|_Holger__|_3
div Daten_|_Jens___|_div. Daten_|_Jens____|_2
div Daten_|_Holger_|_div. Daten_|_Ralf____|_1
div Daten_|_Holger_|_div. Daten_|_Claudia_|_1
div Daten_|_Ralf___|_div. Daten_|_leer____|_leer
div Daten_|_Claudia|_div. Daten_|_leer____|_leer
div Daten_|_Jens___|_div. Daten_|_leer____|_leer

Wobei die Reihenfolge der Namen keine Rolle spielt.
Ich hoffe es ist jetzt etwas eindeutiger dargestellt und Du kannst mir weiter helfen.

Ingo


Anzeige
Re: Häufigkeit verschiedener Namen
09.05.2002 07:55:07
Berai
Re: Häufigkeit verschiedener Namen
09.05.2002 08:00:53
Berai
Hallo Ingo,

leider wurden die Spaltenköpfe im Beispiel nicht richtig ausgegeben, in den Formeln habe ich aber die Spalten entsprechend Deiner Fragestellung benutzt.
A entspricht Y
B entspricht CV
C entspricht CW

Gruß
Berai

Re: Häufigkeit verschiedener Namen
09.05.2002 09:15:27
WernerB.
Hallo Ingo,

ist es Dir so genehm:

Ich bin davon ausgegangen, dass in der Zeile 1 Spaltenüberschriften stehen; widrigenfalls muss eine Makroanpassung erfolgen.

Viel Erfolg wünscht
WernerB.

Anzeige
Re: Häufigkeit verschiedener Namen
09.05.2002 17:14:16
Ingo J.
Hi Berai,

Danke für deine Formeln, aber das hatte ich auch schon ausprobiert. Diese Methode ist nur nicht mehr machbar bei der Tabelle die ich habe, wie schon geschrieben bei ca. 2500 Zeilen und über 50 Namen.

Aber danke für Deine Bemühung

gruss Ingo

Re: Häufigkeit verschiedener Namen
09.05.2002 17:23:43
Ingo J.
Hi WernerB.,

die Formel ist vom Ergebnis, so wie ich es mir vorgestellt habe. Danke !
Nur habe ich noch eine Frage.
Bei meiner Tabelle hat es ca. 15 Minuten gedauert bis das Makro alle Daten erfasst hat. Gibt es eine Möglichkeit dieses etwas zu beschleunigen. Wie gesagt das Ergebnis war in Ordnung.

Gruss ingo

Anzeige
Re: Häufigkeit verschiedener Namen
09.05.2002 19:25:58
WernerB.
Hallo Ingo,

mit einem anderen Lösungsansatz konnte ich eine jetzt (hoffentlich) annehmbare Laufzeit erreichen.
Du musst allerdings dabei in Kauf nehmen, dass die Namen in Spalte CV alphabetisch sortiert sind.

Viel Erfolg wünscht
WernerB.

Re: Häufigkeit verschiedener Namen
09.05.2002 19:26:28
th.heinrich
Re: Häufigkeit verschiedener Namen
09.05.2002 22:33:33
Ingo J.
Danke Thomas aber Deine Variante ist mir zu umständlich, außerdem bin ich kein Freund von ARRAY-Formeln.

Ich bin trotzdem erstaunt auf was für interesant Lösungen ich hier stoße.

Ich möchte mich schonmal bei allen bedanken die Zeit und Grips investiert haben um mir zu helfen.

Ingo

Anzeige
Häufigkeit verschiedener Namen + Diagramm
09.05.2002 22:53:55
Ingo J.
Hallo WernerB.,

Die Formel ist ausgezeichnet, hat auch nur ne 10 sek gebraucht bis alle Werte ermittelt waren.
Kannst Du mir nochmal helfen?
Ich möchte noch das die Auswertung nicht zwische Gross und Kleinschreibung unterscheidet. Wie es in der Übersichtsspalte ( also CV) dargestellt wir ist mir dann auch egal.
Außerdem habe ich festgestellt das in einigen Zellen vor den ersten Buchstaben ein leer Zeichen ist. Auch hier wäre es gut wenn die Formel diese ignorieren würde.

Ich habe Deine Formel auch etwas erweitert und habe noch eine Frage zu dem Diagramm das erstell wird. wie kann ich unter jeden Balken den Namen schreiben lassen, zur Zeit wird nur der erste Name unter dem Diagramm geschrieben. Ich möchte aber nicht auf die farbigen Balken verzichten. Wenn ich alle Balken mit einer Datenreihe erstelle klappt es ja, aber alle Balben sind nur in einer Farbe.

Hier der jetzige Stand der Formel

Sub HaeufigkeitNamen()
Dim BlaNa As String, s As String
Dim fiR As Long, laR As Long, laRn As Long, anz As Long, i As Long
Dim x As Long
Dim y As Long
Dim o As Long
Dim z As Long
Dim summe As Variant
Application.ScreenUpdating = False
BlaNa = ActiveSheet.Name
laR = Cells(Rows.Count, 25).End(xlUp).Row
Sheets.Add
ActiveSheet.Move After:=Sheets(Sheets.Count)
Sheets(BlaNa).Range("Y2:Y" & laR).Copy
ActiveSheet.Range("Y2:Y" & laR).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("Y2:Y" & laR).Sort Key1:=Range("Y2"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
fiR = 1
Do While Not i >= laR
anz = 0
For i = fiR To laR
s = Cells(fiR, 25).Value
If Cells(i, 25).Value = s Then
anz = anz + 1
Else
laRn = Cells(Rows.Count, 100).End(xlUp).Row
Cells(laRn + 1, 100).Value = s
Cells(laRn + 1, 101).Value = anz
fiR = i
Exit For
End If
Next i
If i > laR Then Exit Do
Loop
laR = Cells(Rows.Count, 100).End(xlUp).Row
ActiveSheet.Range("CV2:CW" & laR).Copy
Sheets(BlaNa).Range("CV2:CW" & laR).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
Sheets(BlaNa).Select
Application.ScreenUpdating = True
Range("CV1").Select

'Bildet die Summe alles Namen
z = 2
Do Until IsEmpty(Cells(z, 101))
z = z + 1
Loop
For o = 2 To z
summe = summe + Cells(o, 101).Value
Next o
Cells(1, 100).Value = "Verantwortlich"
Cells(1, 101).Value = "Anzahl"
Cells(1, 102).Value = "Gesamt"
Cells(2, 102).Value = summe

'Diagramm wird erzeugt
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets(BlaNa).Range(Sheets(BlaNa).Cells(2, 100).Address & ":" & Sheets(BlaNa).Cells(laRn + 1, 101).Address), PlotBy _
:=xlColumns
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
ActiveChart.HasLegend = False

x = 1
For y = 1 To laRn - 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(x).Values = Sheets(BlaNa).Cells(x + 1, 101)
ActiveChart.SeriesCollection(x).Name = Sheets(BlaNa).Cells(x + 1, 100)
x = x + 1
Next y

ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Text = "Gesamtübersicht aller Verursacher bei " & summe & " Schadmeldungen"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Verursacher"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Anzahl"
End With

Sheets(BlaNa).Select
Range("A1").Select

End Sub

Im voraus nochmal Danke für die investierte Zeit

Ingo

Anzeige
Nachtrag
10.05.2002 07:27:03
Ingo J.
Ich habe mich in dem vorigen Beitrag nicht Korrekt ausgedrückt.
Bei den einzelnen Zellen mit dem Leerzeichen vor den Namen, möchte ich natürlich nicht das der komplette Name ignoriert wird sondern nur das Leerzeichen.

Außerdem nicht wundern in der Formel ist kein Fehler in der dritten Zeile unter dem Kommentar "'Diagramm wird erzeugt". Habe die Formel nur reinkopiert und nicht aufgepasst ob es mit der Länge hinhaut.

Müsste theoretisch so aussehen

ActiveChart.SetSourceData Source:=Sheets(BlaNa).Range(Sheets(BlaNa) _
.Cells(2, 100).Address & ":" & Sheets(BlaNa).Cells(laRn + 1, 101).Address), PlotBy _
:=xlColumns


Gruss
Ingo


Anzeige
Nachtrag 2
10.05.2002 10:49:52
Ingo J.
Hi,

habe die Lösung für mein Problem mit der Groß/Kleinschreibung und dem Leerzeichen selbst gefunden

Habe folgende Formellösung eingefügt

For a = 2 To laR
Text = Cells(a, 25).Value ' Zeichenfolge initialisieren.
Trim = LTrim(Text) ' Trim = "<-Name "
Cells(a, 25).Value = Trim
Text = Cells(a, 25).Value
Groß = UCase(Text) ' Groß = " Grossbuchstaben"
Cells(a, 25).Value = Groß
Next a

ist wahrscheinlich nicht das non plus ultra, aber es funktioniert.
Auch stimmt die Formel vom Beitrag zuvor nicht mehr, habe noch einige Punkte modifiziert.

Nun habe ich trotzdem noch das Problem mit der Balkenbeschriftung unterhalb jedes Balkens im Diagramm

Würde mich freuen wenn mir jemand bei meinen letzten Problem helfen könnte

MfG
Ingo



Anzeige
Re: Nachtrag
10.05.2002 18:41:30
WernerB.
Hallo Ingo,

Deine Wünsche betreffend Gross-/Kleinschreibung und Nichtberücksichtigung von führenden/abschließenden Leerzeichen (hatte ich auch ohne Deinen Nachtrag so verstanden) sind jetzt eingearbeitet.
Bei der Gelegenheit habe ich auch noch zwei kleinere Programmfehler entdeckt und eliminiert.

Was die Angelegenheit mit dem Diagramm betrifft, so bitte ich Dich, doch diesbezüglich einen neuen Thread aufzumachen.

Zum Einen handelt es sich dabei um ein völlig neues Problem, zum Andern arbeite ich zwar gelegentlich auch mit Diagrammen, allerdings nur manuell; mit Makros, die Diagramme erzeugen oder bestehende verändern, habe ich mich noch nie befasst.

Von daher ist es sicherlich effizienter, wenn diesen Part ein Diagramm-Makroerfahrener Forumsteilnehmer übernimmt.

Ich bitte dafür um Verständnis.

MfG
WernerB.

Anzeige
Re: Nachtrag
10.05.2002 20:30:50
Ingo J.
Danke,

Du hast mir sehr weitergeholfen. Ich hätte wahrscheinlich wochenlang gegrübelt wie ich das hinbekomme.

Werde die neue Formel gleich ausprobieren.
Was den Rest angeht ist kein Problem, das bekomme ich auch noch irgendwie zusammen.

MfG
Ingo

Anzeige

Infobox / Tutorial

Häufigkeit verschiedener Namen in Excel ermitteln


Schritt-für-Schritt-Anleitung

Um die Häufigkeit von Namen in einer großen Excel-Tabelle zu ermitteln und in einer neuen Spalte anzuzeigen, kannst Du ein Makro verwenden. Die folgende Schritt-für-Schritt-Anleitung zeigt, wie Du das umsetzen kannst:

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke im Menü auf Einfügen und dann auf Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub HaeufigkeitNamen()
        Dim BlaNa As String, s As String
        Dim fiR As Long, laR As Long, laRn As Long, anz As Long, i As Long
        Dim x As Long
    
        Application.ScreenUpdating = False
        BlaNa = ActiveSheet.Name
        laR = Cells(Rows.Count, 25).End(xlUp).Row
    
        ' Neue Arbeitsblatt erstellen
        Sheets.Add
        ActiveSheet.Move After:=Sheets(Sheets.Count)
        Sheets(BlaNa).Range("Y2:Y" & laR).Copy
        ActiveSheet.Range("Y2:Y" & laR).PasteSpecial Paste:=xlValues
    
        Range("Y2:Y" & laR).Sort Key1:=Range("Y2"), Order1:=xlAscending, Header:=xlYes
        fiR = 1
    
        Do While Not i >= laR
            anz = 0
            For i = fiR To laR
                s = Cells(fiR, 25).Value
                If Cells(i, 25).Value = s Then
                    anz = anz + 1
                Else
                    laRn = Cells(Rows.Count, 100).End(xlUp).Row
                    Cells(laRn + 1, 100).Value = s
                    Cells(laRn + 1, 101).Value = anz
                    fiR = i
                    Exit For
                End If
            Next i
            If i > laR Then Exit Do
        Loop
    
        laR = Cells(Rows.Count, 100).End(xlUp).Row
        Sheets(BlaNa).Range("CV2:CW" & laR).Copy
        Sheets(BlaNa).Range("CV2:CW" & laR).PasteSpecial Paste:=xlValues
    
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Starte das Makro über Entwicklertools > Makros und wähle HaeufigkeitNamen.

Dieses Makro zählt die Häufigkeit des Namens in Spalte Y und listet die Ergebnisse in den Spalten CV und CW auf.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht: Stelle sicher, dass Du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Makros.
  • Daten werden nicht korrekt gezählt: Überprüfe, ob in Spalte Y führende Leerzeichen vorhanden sind. Verwende die Funktion TRIM, um diese zu entfernen.
  • Lange Laufzeiten: Wenn das Makro lange dauert, versuche, die Bildschirmaktualisierung zu deaktivieren, während das Makro läuft (wie im Code gezeigt).

Alternative Methoden

Eine alternative Methode zur Ermittlung der Häufigkeit von Namen könnte die Verwendung der Funktion ZÄHLENWENN sein:

  1. In Zelle CV2 kannst Du folgende Formel verwenden:

    =WENNFEHLER(INDEX($Y$2:$Y$2500;VERGLEICH(0;ZÄHLENWENN($CV$1:CV1;$Y$2:$Y$2500);0));"")
  2. In Zelle CW2 kannst Du die Zähllogik hinzufügen:

    =ZÄHLENWENN($Y$2:$Y$2500;CV2)

Diese Methode ist jedoch weniger effizient bei sehr großen Datenmengen.


Praktische Beispiele

Angenommen, Du hast die folgenden Namen in Spalte Y:

Y
Holger
Jens
Holger
Ralf
Claudia
Jens

Nach dem Ausführen des Makros sollte Deine Tabelle so aussehen:

CV CW
Holger 2
Jens 2
Ralf 1
Claudia 1

Dies zeigt die Häufigkeit der Namen in Deiner Tabelle an.


Tipps für Profis

  • Verwende die Funktion UNIQUE, um eine Liste von einzigartigen Namen zu erhalten, bevor Du die Häufigkeit zählst (verfügbar in Excel 365).
  • Bei großen Datensätzen kann die Verwendung von Pivot-Tabellen eine schnellere Lösung zur Analyse der Häufigkeit von Namen darstellen.
  • Automatisiere den Prozess durch die Erstellung eines benutzerdefinierten Menüs, um das Makro einfacher auszuführen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich das Makro anpassen, um die Groß- und Kleinschreibung zu ignorieren?
Antwort:
Füge die Funktion UCase in den Vergleichsbedingungen im Makro ein, um alle Namen in Großbuchstaben zu konvertieren.

2. Frage
Kann ich das Diagramm automatisch erstellen lassen?
Antwort:
Ja, Du kannst den Diagramm-Teil im Makro anpassen, um ein Diagramm zu erstellen, das die Häufigkeit von Namen visualisiert. Wenn Du Hilfe benötigst, erstelle einen neuen Thread im Forum.

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