Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrdimensionale Arrays durchsuchen usw.

Mehrdimensionale Arrays durchsuchen usw.
25.10.2004 16:47:01
Stefan
Hallo,
ich muss gestehen, bzgl Arrays bin ich ja nicht so fit.
Darum hab ich auch ein paar Fragen:
Frage 1:
--------
Gibt es eigentlich die Möglichkeit festzustellen, wie viele Elemente eine bestimmte Dimension hat.
Also bei eindimensionalen Arrays hat man ja die Möglichkeit folgendes zu machen.
Ubound(Array)
so, wie kann ich das jetzt bei nen dreidimensionalen Array für die 3. (variable) Dimension machen?
Frage 2:
--------
Wie kann ich in einem _mehrdimensionalen_ Array nach einem Element suchen?
bei einem eindimensionalen array kann ich das ja mit
Array.IndexOf(Arrayname, "Suchbegriff"))
machen.
Bei einem zweidimenstionalen Array?
Sorry, ich hab auch schon gegoogled, aber ich finde irgendwie nix...
Danke!
Stefan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zu Frage 1
Reinhard
Hi Stefan,

Sub tt()
Dim a(5, 6, 7) As Variant
For n = 1 To 3
MsgBox UBound(a, n)
Next n
End Sub

Zu 2: ich finde bei XL2000 kein "IndexOf".
Gruß
Reinhard
Zu Frage 2
ChrisL
Hi Stefan
Verwende Tabellenfunktionen. Ein Beispiel mit SVERWEIS/VLOOKUP

Sub t()
Dim Arr(1, 1)
Arr(0, 0) = "a"
Arr(1, 0) = "b"
Arr(0, 1) = "1"
Arr(1, 1) = "2"
MsgBox WorksheetFunction.VLookup("a", Arr, 2)
End Sub

Gruss
Chris
Anzeige
AW: Zu Frage 2
Stefan
Hi,
Ja, danke euch beiden...
Ich probiers mal aus...
Danke nochmals!
Stefan
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrdimensionale Arrays in Excel effizient durchsuchen


Schritt-für-Schritt-Anleitung

Um in Excel mit mehrdimensionalen Arrays zu arbeiten, kannst Du folgende Schritte befolgen:

  1. Arrays deklarieren: Lege ein mehrdimensionales Array fest. Zum Beispiel:

    Dim a(5, 6, 7) As Variant
  2. Dimensionen abfragen: Um die Anzahl der Elemente in einer bestimmten Dimension zu ermitteln, verwende die UBound-Funktion. Für ein dreidimensionales Array sieht das so aus:

    For n = 1 To 3
       MsgBox UBound(a, n)
    Next n
  3. Elemente im Array suchen: Du kannst die Excel-Funktion VLookup (SVERWEIS) verwenden, um in einem mehrdimensionalen Array nach einem bestimmten Element zu suchen:

    Dim Arr(1, 1)
    Arr(0, 0) = "a"
    Arr(1, 0) = "b"
    Arr(0, 1) = "1"
    Arr(1, 1) = "2"
    MsgBox WorksheetFunction.VLookup("a", Arr, 2)

Häufige Fehler und Lösungen

  • Fehler: "IndexOutOfBounds": Dieser Fehler tritt auf, wenn Du versuchst, auf ein Element außerhalb der Grenzen des Arrays zuzugreifen. Stelle sicher, dass Du UBound verwendest, um die Größe des Arrays zu überprüfen.

  • Fehler bei der Verwendung von IndexOf: In Excel gibt es keine native IndexOf-Funktion für mehrdimensionale Arrays. Stattdessen solltest Du die oben genannten Methoden verwenden.


Alternative Methoden

Wenn Du mit mehrdimensionalen Arrays in VBA arbeitest, gibt es alternative Methoden, um Daten zu durchsuchen:

  • Schleifen: Verwende Schleifen, um jedes Element im Array zu durchlaufen und zu vergleichen.

    For i = LBound(a, 1) To UBound(a, 1)
       For j = LBound(a, 2) To UBound(a, 2)
           If a(i, j) = "Suchbegriff" Then
               ' Aktion durchführen
           End If
       Next j
    Next i
  • Daten in ein Dictionary speichern: Eine weitere Möglichkeit besteht darin, ein Dictionary-Objekt zu verwenden, um die Suche zu optimieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du mit mehrdimensionalen Arrays in Excel arbeiten kannst:

  1. Erstellen eines 2D-Arrays:

    Dim myArray(1 To 3, 1 To 2) As String
    myArray(1, 1) = "Apfel"
    myArray(1, 2) = "Banane"
    myArray(2, 1) = "Orange"
    myArray(2, 2) = "Traube"
  2. Suchen eines Wertes:

    Dim found As Boolean
    found = False
    For i = LBound(myArray, 1) To UBound(myArray, 1)
       For j = LBound(myArray, 2) To UBound(myArray, 2)
           If myArray(i, j) = "Banane" Then
               found = True
               Exit For
           End If
       Next j
       If found Then Exit For
    Next i
    MsgBox "Gefunden: " & found

Tipps für Profis

  • Verwende Option Base 1: Wenn Du mit mehrdimensionalen Arrays arbeitest, kann es hilfreich sein, die Basis auf 1 zu setzen, um die Lesbarkeit zu erhöhen.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme beim Zugriff auf Array-Elemente zu vermeiden.

  • Verwende Debug.Print: Zum Testen von Arrays während der Entwicklung ist es nützlich, Debug.Print zu verwenden, um die Werte im Direktfenster anzuzeigen.


FAQ: Häufige Fragen

1. Wie kann ich die Dimensionen eines mehrdimensionalen Arrays abfragen? Du kannst die UBound-Funktion verwenden, um die Grenzen jeder Dimension abzufragen. Zum Beispiel UBound(a, 1) für die erste Dimension.

2. Gibt es eine Möglichkeit, in einem mehrdimensionalen Array nach einem bestimmten Wert zu suchen? Ja, Du kannst Schleifen verwenden, um durch die Elemente des Arrays zu iterieren, oder alternative Methoden wie VLookup in Kombination mit Arrays nutzen.

3. Gibt es eine IndexOf-Funktion in Excel für mehrdimensionale Arrays? Nein, Excel bietet keine direkte IndexOf-Funktion für mehrdimensionale Arrays. Stattdessen solltest Du Schleifen oder die VLookup-Funktion verwenden.

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