Zeilenvergleich innerhalb eines Arrays mittels VBA

17/12/2014 - 14:24 von Andreas | Report spam
Hallo NG,

ich sitze vor folgender Fragestellung:

Ich habe ein zweidimensionales Array (myArray) voller Strings. Ich möchte nun wissen, ob der String in myArray(x,y) irgendwo in Zeile Z von myArray vorkommt. Wie kann ich denn in VBA auf die Zeile Z von myArray referenzieren?

In Excel selber würde ich wie folgt vorgehen. Angenommen der Suchwert steht in "A1", und ich vergleiche mit dem Bereich "B1:B10", dann würde meine Formel folgendermaßen aussehen:

{=SUMME((A1±:B10)*1)}
Wenn das Ergebnis größer Null ist, weiß ich, dass der Suchstring irgendwo in B1:B10 vorkommt.

Danke und viele Grüße
Andreas
 

Lesen sie die antworten

#1 Claus Busch
17/12/2014 - 16:29 | Warnen spam
Hallo Andreas,

Am Wed, 17 Dec 2014 05:24:49 -0800 (PST) schrieb Andreas:

Ich habe ein zweidimensionales Array (myArray) voller Strings. Ich möchte nun wissen, ob der String in myArray(x,y) irgendwo in Zeile Z von myArray vorkommt. Wie kann ich denn in VBA auf die Zeile Z von myArray referenzieren?



wie hast du das Array befüllt? Wenn du es über einen Tabellenbereich
gefüllt hast, dann zàhle auch im Tabellenbereich.
Wenn du das Array mit VBA befüllt hast, könntest du wie im Blatt mit
MATCH suchen. Du bekommst eine Fehlermeldung, wenn der Eintrag nicht
gefunden wird oder die Zeilenzahl.
Du kannst aber nicht im kompletten Array MATCH anwenden, sondern nur in
einer Spalte. Das sieht dann für die erste Spalte deines Arrays so aus:
check = WorksheetFunction.Match(myStr, Application.Index(myArray, , 1), 0)

Der Zeilenidex für das Array ist 0 und deswegen leer gelassen. Wenn du
in der zweiten Spalte suchen möchtest, musst du dann die 1 durch eine 2
ersetzen.

Oder lasse einfach eine Schleife über Zeilen und Spalten laufen und dir
in einem String alle Vorkommen korrekt mit Zeile und Spalte auflisten.

Du kannst Array-Formeln auch in VBA nutzen, indem du sie mit Evaluate
berechnest. Aber bei SUM und COUNTIF bekommst du in diesem Falle Fehler,
weil die in einem Objekt zàhlen oder summieren wollen.


Mit freundlichen Grüßen
Claus
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Ähnliche fragen