Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
616to620
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
616to620
616to620
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array durchsuchen

Array durchsuchen
30.05.2005 11:41:47
MikeS
Hallo,
ich suche nach einer Möglichkeit (ohne Schleife), ein eindimensionales Array nach einem Wert zu durchsuchen (ähnlich der Find-Methode bei Zellbereichen).
Mein Codeauszug:
'Arrays neu dimensionieren
ReDim arrQuelle(c_lngStartzeile To lngEndzeile)
ReDim arrZiel(c_lngStartzeile To lngEndzeile2)
'wsQuelle ist mein Quellblatt (arrQuelle)
'wsZiel ist mein Zielblatt (arrZiel)
'in beiden Arrays werden eindeutige Schlüssel, der beiden Tabellen,
'bestehend aus Bel+Pos (z.B. "100/1") eingelesen.
With wsQuelle
For lngAktZeile = c_lngStartzeile To lngEndzeile
arrQuelle(lngAktZeile) = .Cells(lngAktZeile, c_ColBel) & "/" & .Cells(lngAktZeile, c_ColPos)
Next lngAktZeile
End With
With wsZiel
For lngAktZeile = c_lngStartzeile To lngEndzeile2
arrZiel(lngAktZeile) = .Cells(lngAktZeile, c_ColBel) & "/" & .Cells(lngAktZeile, c_ColPos)
Next lngAktZeile
End With
'Nun möchte ich jeden Wert des arrQuelle im arrZiel suchen
'So, wie nachfolgend, klappts natürlich nicht
For lngAktZeile = c_lngStartzeile To lngEndzeile
Suchwert = arrQuelle(lngAktZeile)
lngFundzeile = Application.Match(Suchwert, arrZiel, 0)
If lngFundzeile &gt 0 Then
'tu dies
Else
'tu das
End If
lngFundzeile = 0
Next lngAktZeile
Vielleicht weiß jemand Rat, oder muß ich mein arrZiel auch mittels Schleife
nach dem Suchwert aus arrQuelle durchlaufen?
Vielen Dank
MikeS

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array durchsuchen
30.05.2005 11:53:47
Fred
Hi, deine Idee ist schon richtig. Match liefert einen Fehler, wenn nichts gefunden eird, den musst du noch abfangen.
mfg Fred
AW: Array durchsuchen
30.05.2005 11:58:21
MikeS
Hallo Fred,
meine Suchmethode würde doch ein Range-Objekt zurüchgeben und deshalb kann ich sie nicht verwenden!?
Danke MikeS
AW: Array durchsuchen
30.05.2005 12:00:26
Fred
Hi, match liedert die Zeile, keinen Range.
mfg Fred
AW: Array durchsuchen
30.05.2005 13:08:39
MikeS
Hallo Fred,
wenn ich es nachfolgend ablaufen lasse, finde ich nie einen Wert im arrZiel,
obwohl definitiv Werte gefunden werden müßten!
For lngAktZeile = c_lngStartzeile To lngEndzeile
Suchwert = arrQuelle(lngAktZeile)
lngFundzeile = Application.WorksheetFunction.Match(Suchwert, arrZiel)
If lngFundzeile &gt 0 Then
MsgBox lngFundzeile
Else
MsgBox "nicht gefunden"
End If
lngFundzeile = 0
Next lngAktZeile
Ciao Mike
Anzeige
AW: Array durchsuchen
30.05.2005 11:57:16
Galenzo
Worksheetfunctions.Match(Suchwert, arrZiel)
Viel Erfolg!
AW: Array durchsuchen
01.06.2005 13:22:26
Galenzo
.Match
.Find
(Groß-Kleinschreibung)
AW: Array durchsuchen
02.06.2005 07:54:39
MikeS
danke euch beiden, aber es handelt sich um keinen zellbereich, den ich so an mein array übergebe "meinArray = [A1:A500].
ich fülle meine array mittels schleife und suche die werte im array nun auch über eine schleife, da .Find und .Match nur bei einem zellbereich eingesetzt werden kann.
CODING:
'Array mit eindeutigem Schlüssel füllen
...
With wsZiel
For lRow = LBound(arrZiel) To UBound(arrZiel)
arrZiel(lRow) = .Cells(lRow, c_intColBel) & "/" & .Cells(lRow, c_intColPos)
Application.StatusBar = "Tab." & wsZiel.Name & "_Schlüsselfeld erstellt;" & _
lRow & " von " & p_lngEndzeile2 & "..."
Next lRow
End With
...
'Array durchsuchen
...
lMerkzahl = LBound(arrQuelle)
lMerkzahl2 = LBound(arrQuelle2)

For lngZeile = c_lngStartzeile To p_lngEndzeile2
'Prüfen ob Suchwert in Quelltabelle vorhanden ist
Suchwert = arrZiel(lngZeile)
lRow = 0
Bel_Pos_gefunden = False

For lRow = lMerkzahl To UBound(arrQuelle)
If arrQuelle(lRow) = Suchwert Then
'Suchwert wurde gefunden
Bel_Pos_gefunden = True
'neuer Start (Laufzeitoptimierung)
lMerkzahl = lRow
Exit For
End If
Next lRow
...
danke euch trotzdem. lg mikeS
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige