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

Forumthread: Anzahl Datensätze aus Array ermitteln

Anzahl Datensätze aus Array ermitteln
18.12.2018 16:12:22
BLangmantl
Hallo, ich lasse aus einer Tabelle folgende 3 Spalten aus einer Tabelle in ein Array schreiben.
Vorname, Nachname, Mitgliedsstatus.
Das funktioniert auch ganz gut, das mache ich über folgendes Array
Dim lngLetzteZeile As Long, lngLetzeSpalte As Long, lngZeihlenzähler As Long
Dim arrMitglieder() As String
Const bytErstezeile As Byte = 8
ReDim arrMitglieder(bytErstezeile To lngLetzteZeile, 1 To 3)
For lngZeihlenzähler = bytErstezeile To lngLetzteZeile
arrMitglieder(lngZeihlenzähler, 1) = ws.Cells(lngZeihlenzähler, 4)
arrMitglieder(lngZeihlenzähler, 2) = ws.Cells(lngZeihlenzähler, 5)
arrMitglieder(lngZeihlenzähler, 3) = ws.Cells(lngZeihlenzähler, 23)
Next lngZeihlenzähler
Ich weiß das ich über lbound und ubound die Anzahl der Datensätze ausgeben kann.
Nun soll es aber mehrere Mitgliedsstatis geben. Kann ich zählen lassen, wie viele Datensätze, die in der dritten Spalte zum Beispiel Aktivmitglieder vorhanden sind?
Also es könnte sein, dass ein Mitglied Ehrenmitglied und eines Aktivmitglied ist. Dann schreibt er ja auch 2 Datensätze in das Array. Wenn ich aber wissen will, wieveile Aktivmitglieder es innerhalb des Arrays gibt, geht das irgendwie und wenn ja wie?
danke schon mal
Hintergrund ist diese, dass ich Anhand der Anzahl der Datensätze entsprechen der einzelnen Statis neue Mitgliedsnummer vergeben möchte diese sind aber nicht grundsätzlich fortlaufend, sondern immer fortlaufend des Statuses
Danke schon mal für die Hilfe
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl Datensätze aus Array ermitteln
18.12.2018 16:38:01
Rudi
Hallo,
du musst doch nur das Array durchgehen.

for i= lbound(arrMitglider) to ubound(arrmitglieder)
if arrmitglieder(i,3)="aktiv" then intAktiv=intaktiv+1
next i
Mstgox intAktiv

Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Anzahl Datensätze aus Array ermitteln


Schritt-für-Schritt-Anleitung

Um die Anzahl der Datensätze aus einem Array in Excel VBA zu ermitteln, kannst du die folgenden Schritte befolgen:

  1. Deklariere das Array: Definiere dein Array, in das du Daten speichern möchtest. Beispiel:

    Dim arrMitglieder() As String
    ReDim arrMitglieder(1 To 100, 1 To 3) ' Beispiel für 100 Mitglieder
  2. Fülle das Array: Verwende Schleifen, um Daten aus deiner Tabelle in das Array zu übertragen. Beispiel:

    Dim lngLetzteZeile As Long
    Dim lngZeihlenzähler As Long
    lngLetzteZeile = 100 ' Angenommene letzte Zeile
    For lngZeihlenzähler = 1 To lngLetzteZeile
       arrMitglieder(lngZeihlenzähler, 1) = ws.Cells(lngZeihlenzähler + 7, 4) ' Vorname
       arrMitglieder(lngZeihlenzähler, 2) = ws.Cells(lngZeihlenzähler + 7, 5) ' Nachname
       arrMitglieder(lngZeihlenzähler, 3) = ws.Cells(lngZeihlenzähler + 7, 23) ' Mitgliedsstatus
    Next lngZeihlenzähler
  3. Zähle die Elemente: Um die Anzahl der bestimmten Mitgliedsstatus (z.B. "Aktiv") zu ermitteln, kannst du die Schleife wie folgt erweitern:

    Dim intAktiv As Integer
    intAktiv = 0
    For i = LBound(arrMitglieder) To UBound(arrMitglieder)
       If arrMitglieder(i, 3) = "aktiv" Then
           intAktiv = intAktiv + 1
       End If
    Next i
    MsgBox "Anzahl der aktiven Mitglieder: " & intAktiv

Häufige Fehler und Lösungen

  • Fehler: Array ist nicht initialisiert
    Lösung: Stelle sicher, dass du das Array mit ReDim initialisiert hast, bevor du es füllst.

  • Fehler: LBound oder UBound gibt falsche Werte zurück
    Lösung: Überprüfe, ob du die Indizes korrekt verwendest. Bei einem Array, das mit ReDim erstellt wurde, kann der untere Index von 1 bis n oder 0 sein, je nach Definition.


Alternative Methoden

Eine Alternative zur Verwendung eines Arrays ist die Nutzung von Collection-Objekten oder Dictionary-Objekten. Diese ermöglichen es dir, Daten dynamisch zu speichern und einfacher auf die Anzahl von bestimmten Elementen zuzugreifen.

Beispiel mit Dictionary:

Dim dictMitglieder As Object
Set dictMitglieder = CreateObject("Scripting.Dictionary")

' Füge Mitglieder hinzu
For i = 1 To lngLetzteZeile
    dictMitglieder.Add ws.Cells(i + 7, 4).Value, ws.Cells(i + 7, 23).Value
Next i

' Zähle aktive Mitglieder
Dim intAktiv As Integer
For Each key In dictMitglieder.Keys
    If dictMitglieder(key) = "aktiv" Then
        intAktiv = intAktiv + 1
    End If
Next key
MsgBox "Anzahl der aktiven Mitglieder: " & intAktiv

Praktische Beispiele

Hier sind einige praktische Beispiele, um die Anzahl der Elemente in einem VBA-Array zu ermitteln:

  1. Einfaches Zählen:

    Dim count As Integer
    count = UBound(arrMitglieder) - LBound(arrMitglieder) + 1
    MsgBox "Gesamtanzahl der Mitglieder: " & count
  2. Zählen nach Kriterien:

    Dim intEhren As Integer
    intEhren = 0
    For i = LBound(arrMitglieder) To UBound(arrMitglieder)
       If arrMitglieder(i, 3) = "Ehrenmitglied" Then
           intEhren = intEhren + 1
       End If
    Next i
    MsgBox "Anzahl der Ehrenmitglieder: " & intEhren

Tipps für Profis

  • Verwende Application.WorksheetFunction.CountIf, um die Anzahl von bestimmten Werten direkt aus einem Bereich zu zählen, ohne ein Array zu verwenden.
  • Nutze Option Base am Anfang deines Moduls, um den Standardwert für Indizes in Arrays festzulegen (0 oder 1).
  • Für große Datenmengen kann das Arbeiten mit Arrays die Performance deutlich verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Größe eines Arrays in Excel VBA ermitteln?
Du kannst die Größe eines Arrays mit UBound und LBound ermitteln, um die Anzahl der Elemente zu zählen.

2. Kann ich ein Array dynamisch erweitern?
Ja, du kannst Arrays mit ReDim Preserve dynamisch erweitern, wobei die vorhandenen Daten erhalten bleiben.

3. Was ist der Unterschied zwischen LBound und UBound?
LBound gibt den niedrigsten Index des Arrays zurück, während UBound den höchsten Index zurückgibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige