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
Anzeige
Anzeige
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
Anzeige