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

Forumthread: Array: Gleiche zusammenfassen/zählen

Array: Gleiche zusammenfassen/zählen
01.06.2005 10:28:04
PeterP
Hallo,
leider neige ich dazu, eher umständlichen Code zu schreiben, was unnötig Zeit kostet ;-),daher frage ich lieber mal bei Euch an:
Wie würdet Ihr in einem Array gleiche Werte zusammenfassen?
Also z.b.
Array:
1 a
2 b
3 b
4 b
5 X
6 X
7 a
soll ergeben (gleiche zusammenfassen und Anzahl ablegen)
a 2
b 3
X 2
Gruß&Dank
Peter
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array: Gleiche zusammenfassen/zählen
01.06.2005 13:00:43
bst
Mahlzeit Peter,
versuch's mal auf hiermit:
Option Explicit

Type TmyCount
    item As String
    count As Integer
End Type

Sub x()
    Dim icount As Integer
    Dim acount() As TmyCount
    Dim a(7) As String
    Dim i As Integer, index As Integer
    
    a(1) = "a": a(2) = "b": a(3) = "b": a(4) = "b": a(5) = "X": a(6) = "X": a(7) = "a"
    
    icount = -1
    For i = 1 To 7
        index = IsInArray(icount, acount, a(i))
        If index < 0 Then
            icount = icount + 1
            ReDim Preserve acount(icount)
            acount(icount).item = a(i)
            acount(icount).count = 1
        Else
            acount(index).count = acount(index).count + 1
        End If
    Next
    
    For i = 0 To UBound(acount)
        Debug.Print acount(i).item, acount(i).count
    Next
End Sub

Function IsInArray(icount As Integer, acount() As TmyCount, ele As String)
    Dim i As Integer
    IsInArray = -1
    For i = 0 To icount
        If acount(i).item = ele Then
            IsInArray = i
            Exit Function
        End If
    Next
End Function

Gruß, Bernd
Anzeige
AW: Array: Gleiche zusammenfassen/zählen
09.06.2005 13:31:00
PeterP
Hallo Bernd,
danke für den Code, sobald ich dazukomme wird er eingebaut!
Gruß
Peter
;

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

Gleiche Werte in Excel zusammenfassen und zählen


Schritt-für-Schritt-Anleitung

Um in Excel gleiche Werte zusammenzufassen und zu zählen, kannst Du den folgenden VBA-Code verwenden. Dieser Code nutzt ein Array und die Funktion IsInArray, um die Anzahl der Vorkommen jeder einzigartigen Zahl zu ermitteln.

  1. Öffne das Excel-Dokument, in dem Du die Werte zusammenfassen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Füge den folgenden Code in das Modul ein:
Option Explicit

Type TmyCount
    item As String
    count As Integer
End Type

Sub ZusammenfassenUndZaehlen()
    Dim icount As Integer
    Dim acount() As TmyCount
    Dim a(7) As String
    Dim i As Integer, index As Integer

    a(1) = "a": a(2) = "b": a(3) = "b": a(4) = "b": a(5) = "X": a(6) = "X": a(7) = "a"

    icount = -1
    For i = 1 To 7
        index = IsInArray(icount, acount, a(i))
        If index < 0 Then
            icount = icount + 1
            ReDim Preserve acount(icount)
            acount(icount).item = a(i)
            acount(icount).count = 1
        Else
            acount(index).count = acount(index).count + 1
        End If
    Next

    For i = 0 To UBound(acount)
        Debug.Print acount(i).item, acount(i).count
    Next
End Sub

Function IsInArray(icount As Integer, acount() As TmyCount, ele As String) As Integer
    Dim i As Integer
    IsInArray = -1
    For i = 0 To icount
        If acount(i).item = ele Then
            IsInArray = i
            Exit Function
        End If
    Next
End Function
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe den Code aus, um die gleiche Werte zusammenfassen und zählen zu lassen.

Häufige Fehler und Lösungen

  • Fehler: "Sub oder Function nicht definiert"
    Stelle sicher, dass die Funktion IsInArray korrekt im gleichen Modul definiert ist.

  • Problem: Keine Ausgabe im Direktfenster
    Überprüfe, ob Du das Direktfenster (Strg + G) im VBA-Editor geöffnet hast, um die Ergebnisse zu sehen.

  • Fehler: "Typ nicht definiert"
    Vergewissere Dich, dass der Typ TmyCount korrekt deklariert ist.


Alternative Methoden

Falls Du nicht mit VBA arbeiten möchtest, kannst Du auch die Funktionen ZÄHLENWENN oder Pivot-Tabellen verwenden, um gleiche Werte zusammenzufassen und zu zählen:

  1. ZÄHLENWENN: Verwende die Funktion =ZÄHLENWENN(A:A, "a"), um die Anzahl der Werte "a" in einer Spalte zu zählen.
  2. Pivot-Tabelle: Erstelle eine Pivot-Tabelle, um eine Zusammenfassung der Werte mit deren Häufigkeit zu erhalten.

Praktische Beispiele

Angenommen, Du hast die folgende Liste:

A
a
b
b
b
X
X
a

Nach der Anwendung des VBA-Codes erhältst Du im Direktfenster:

a 2
b 3
X 2

Tipps für Profis

  • Nutze Debug.Print für die Ausgabe in das Direktfenster und zur Fehlerdiagnose.
  • Du kannst die Funktion IsInArray anpassen, um sie flexibler zu gestalten, z.B. um auch mit Zahlen zu arbeiten.
  • Experimentiere mit Arrays in Excel VBA, um verschiedene Datentypen effizient zu verarbeiten.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehr als 7 Werte zu verarbeiten?
Erhöhe einfach die Größe des Arrays a() und passe die Schleife entsprechend an.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in allen gängigen Excel-Versionen ab Excel 2007 funktionieren. Achte darauf, dass Makros aktiviert sind.

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