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

anzahl der werte in array?

Forumthread: anzahl der werte in array?

anzahl der werte in array?
22.10.2002 12:50:40
sina
Wie kann ich die anzahl der argumente in meinem array herausbekommen? ich will ein schleife haben, die von 0 bis "letzte position im array" läuft. da sich diese aber ändern kann, würde ich das eben gerne per befehl machen. geht das?
Danke schon mal..
sina
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: anzahl der werte in array?
22.10.2002 12:59:59
ICN
Die erste Position im Array findet man mit der Funktion LBound(Array) und die letzte mit UBound(Array)
mfg
Ingo Christiansen
Re: anzahl der werte in array?
22.10.2002 13:05:30
sina
ich dachte das sind der größte und der kleinste wert im array??
Re: anzahl der werte in array?
22.10.2002 13:06:28
Martin Beck
Hallo Sina,

ungefähr so:

Gruß
Martin Beck

Anzeige
Re: anzahl der werte in array?
22.10.2002 13:10:54
sina
gibts da nicht einfach nen befehl für?? mh..
dann könnt ich aber auch nen loop machen bis isempty(array(i)), oder??
Re: anzahl der werte in array?
22.10.2002 13:22:32
Martin Beck
Hallo Sina,

es wurde schon UBound vorgeschlagen, das würde in meinem Beispiel aber 17 liefern, und das willst Du ja wohl nicht.

Mit Do-Loop wie folgt:

Gruß
Martin Beck

Anzeige
mit text im array?
22.10.2002 13:25:53
sina
sehe ich das richtig: du weisst dem array 5 werte zu (2,4,6,8,10). der rest ist null, weil du 17 positionen dimensioniert hast.
das isempty bezieht sich auf einen wert = null.
stimmt das so?
das problem ist, dass in meinem array namen stehen. die würde ich ihm schon ganz gerne vorgeben, also array1 = ("müller", "maier",.usw). kann zwischen 4 und 8 namen liegen.
ich bruache 4 arrays. nachher muss ich einen namen vergleichen, und dann einem team zuweisen. (ich hatte es erst über ifs gemacht, aber mehr als 2 or's versteht der nicht..)
Anzeige
Re: anzahl der werte in array?
22.10.2002 13:28:56
Hans W. Hofmann
Ich misch mich mal ein. Entweder versteh ich die Frage nicht, oder Ihr erfindet das Rad neu:

MsgBox WorksheetFunction.Count(arr)

Gruß HW

Re: anzahl der werte in array?
22.10.2002 13:34:29
sina
da kommt bei mir null raus. was zählt er da? die anzahl der arrays? ich will, wenn ich folgendes array definiert habe: array1 = ("Müller", "Meier", "xy") eine 3 bekommen, da 3 positionen in meinem array sind.
Anzeige
Re: anzahl der werte in array?
22.10.2002 13:41:27
Hans W. Hofmann
Was er zählt kannst Du in der Online-Help bei den Tabellen-Funktionen nachlesen. Es gibt zwei ANZAHL-Funktionen!
Dein Beispielarray kann so nicht vereinbart werden, keine vernüftige Syntax. Wenn alle Indizes besetzt sind verwende UBOUND/LBOUND...
Wie wird das Teil eigentlich Dim(ensioniert)?

Gruß HW

Anzeige
ok ok
22.10.2002 13:53:34
sina
also gut, verstehen tu ich zwar nix mehr, aber es funktioniert mit dem ubound (in der hilfe verstand ich das so, als ob es den größten wert ausgibt, und nicht die anzahl der positionen im array). aber ok.
ich werde mir dann mal nen grundkurs in arrays aneignen!
Vielen dank für eure hilfen!!!
sina
Anzeige
Re: anzahl der werte in array?
22.10.2002 13:55:05
Martin Beck
Hallo Hans,

hast recht. Das Rad wurde neu erfunden, da ich nicht wußte, daß es das Rad schon gibt. ;-) Wieder was gelernt.

Im übrigen glaube ich, daß Sina sich ohnehin verrennt mit Ihrer Aufgabenstellung (siehe mal den länglichen Thread weiter unten).

Gruß
Martin Beck

Stimmt so nicht
22.10.2002 13:58:36
Martin Beck
Hallo Sina,

aus der Hilfe zu UBound:

Gibt einen Wert vom Typ Long zurück, der den größten verfügbaren Index für die angegebene Dimension eines Datenfeldes enthält.

Es hängt also davon ab, wie Du den Array dimensionierst. In meinem Bespiel würde UBound ein falsches Ergebnis liefern. Nimm Hans' Lösung, die geht in jedem Fall.

Aber: Wie schon gesagt, bin ich der Meinung, daß der Weg über Arrays für Deine Aufgabenstellung ohnehin in die Irre führt.

Gruß
Martin Beck

Anzeige
Re: ok ok
22.10.2002 14:01:14
Hans W. Hofmann
Verwische mal nicht die Begrifflichkeiten:
UBOUND/LBOUND ergibt den höchsten/kleinsten Index, also den, den man, wenn mans richtig macht via Dim festlegt.
Mit Werten, die der Array speichert hat das nicx zutun...

Gruß HW

Re: Stimmt so nicht
22.10.2002 14:19:14
sina
also ich hab das noch mal neu und (hoffentlich ausführlich genug) geschildert, vielleicht fällt euch ja was ganz anderes zu ein...
Anzeige
;
Anzeige

Infobox / Tutorial

Anzahl der Werte in einem Array ermitteln


Schritt-für-Schritt-Anleitung

Um die Anzahl der Elemente in einem Excel VBA Array zu ermitteln, kannst Du die Funktionen LBound und UBound verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Array deklarieren: Zuerst musst Du ein Array erstellen und es mit Werten füllen.

    Dim myArray() As String
    myArray = Split("Müller,Meier,Schmidt", ",")
  2. Bestimmen der Dimensionen: Verwende LBound und UBound, um die untere und obere Grenze des Arrays zu ermitteln.

    Dim lowerBound As Long
    Dim upperBound As Long
    lowerBound = LBound(myArray)
    upperBound = UBound(myArray)
  3. Anzahl der Elemente berechnen: Die Anzahl der Elemente im Array erhältst Du durch die Berechnung der Differenz zwischen UBound und LBound.

    Dim elementCount As Long
    elementCount = upperBound - lowerBound + 1
    MsgBox "Die Anzahl der Elemente im Array beträgt: " & elementCount

Häufige Fehler und Lösungen

  1. Falsche Verwendung von UBound: Oft wird UBound missverstanden, da es den höchsten Index des Arrays zurückgibt. Dieser ist nicht gleich der Anzahl der Elemente. Denke daran, dass Du die Differenz zwischen UBound und LBound berechnen musst.

  2. Array nicht korrekt dimensioniert: Wenn Du ein Array mit einer falschen Dimensionierung erstellst, kann dies zu unerwarteten Ergebnissen führen. Stelle sicher, dass Du das Array richtig mit Dim dimensionierst.

  3. Nutzung von Count: Die Verwendung von WorksheetFunction.Count(arr) kann zu falschen Ergebnissen führen, wenn das Array nicht richtig gefüllt ist oder die Syntax nicht stimmt.


Alternative Methoden

Eine alternative Methode zur Ermittlung der Anzahl der Werte in einem Array ist die Verwendung von Schleifen. Hier ist ein Beispiel:

Dim count As Long
count = 0
For i = LBound(myArray) To UBound(myArray)
    If Not IsEmpty(myArray(i)) Then
        count = count + 1
    End If
Next i
MsgBox "Anzahl der nicht leeren Elemente: " & count

Diese Methode zählt die nicht-leeren Elemente im Array und ist hilfreich, wenn Du eine spezifische Filterung benötigst.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Anzahl der Elemente in einem Array ermitteln kannst:

  1. Ein Array mit Zahlen:

    Dim numbers() As Integer
    numbers = Array(1, 2, 3, 4, 5)
    MsgBox "Die Anzahl der Zahlen im Array beträgt: " & (UBound(numbers) + 1)
  2. Ein Array mit Text:

    Dim names() As String
    names = Split("Anna,Berta,Carl", ",")
    MsgBox "Die Anzahl der Namen im Array beträgt: " & (UBound(names) + 1)

Diese Beispiele zeigen, wie einfach es ist, die Anzahl der Elemente in einem Array mithilfe von VBA zu ermitteln.


Tipps für Profis

  • Dimensionierung: Achte darauf, wie Du Dein Array dimensionierst. Verwende dynamische Arrays, wenn die Anzahl der Elemente variabel ist.

  • UBound und LBound: Nutze UBound und LBound zusammen, um immer die korrekte Anzahl der Elemente zu ermitteln, unabhängig von der Dimensionierung.

  • Debugging: Verwende Debugging-Werkzeuge in VBA, um den Inhalt Deines Arrays zu prüfen, und stelle sicher, dass die Werte wie erwartet gespeichert sind.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Elemente in einem leeren Array ermitteln? Die Anzahl der Elemente in einem leeren Array ist nicht definiert. Du solltest zuerst prüfen, ob das Array leer ist, bevor Du LBound oder UBound verwendest.

2. Was passiert, wenn ich UBound für ein nicht initialisiertes Array verwende? Wenn Du UBound auf ein nicht initialisiertes Array anwendest, wirft VBA einen Laufzeitfehler. Stelle sicher, dass das Array initialisiert ist, bevor Du diese Funktion aufrufst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige