Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Find Methode unzuverlaessig?

Find Methode unzuverlaessig?
26.06.2007 15:37:51
Walter
Hallo
ich verwende die Find Methode innerhalb einer Funktion, um mir VLookUp zu ersparen.
Denn VLookUp gibt
1. einen Laufzeitfehler falls es nichts findet
2. Wenn es etwas findet, dann kann ich nur die Spalten rechts davon lesen
Folgenden Code nutze ich hierbei:
(Error Handler ist eine extra Funktion)

Function LookUpSpecial(strSearch As String, rngMatrix As Range, intColOffset As Integer, _
Optional intRowOffset = 0, Optional bolWhole As Boolean = False) As  _
String
425   On Error GoTo SthWrong
Dim c As Range
426     If bolWhole Then
427       Set c = rngMatrix.Find(strSearch, , xlValues, xlWhole)
428     Else
429   Set c = rngMatrix.Find(strSearch, , xlValues, xlPart)
430     End If
431   If c Is Nothing Then
432     LookUpSpecial = ""
433   Else
434     LookUpSpecial = c.Offset(intRowOffset, intColOffset)
435   End If
436   Exit Function
437 SthWrong:
438   ErrLog "modFunctions", "LookUpSpecial", Err.Description, Err.Number, Err.Source, Erl
End Function


Jedoch gibt es jetzt einen Fall in dem die Find Methode nichts findet, obwohl eine Uebereinstimmung existiert.
Vielleicht hat jemand von Euch Erfahrung, was hier falsch laufen koennte.

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

Betreff
Datum
Anwender
Anzeige
AW: Find Methode unzuverlaessig?
26.06.2007 15:47:25
Renee
Mazwara Walter,
Nur mit Deinem Code, kann man den Fall nicht nachvollziehen.
Wie lautet der SearchString ? Wie die SearchRange ? Wie der Offset, oder das erwartete Resultat ?
Kannst Du eine Beispielmappe laden ?
Greetz Renee

AW: Find Methode unzuverlaessig?
26.06.2007 15:59:00
Hubert
Hi,
wie wird die Funktion aufgerufen.
Wenn du die Parameter ohne die benannten Argumente angibts, müssen alle Kommata
gesetzt werden.
Für Vereion 2000:
Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)
mfg Hubert

AW: Find Methode unzuverlaessig?
26.06.2007 23:24:06
Daniel
Hi
also in Excel 2002 müssen nicht alle Kommata gesetzt werden, wenn die optionalen Parameter nicht gesetzt werden, können auch die Kommas wegfallen.
Lediglich wenn zwischendrin ein Parameter ausgelassen wird (so wie hier), müssen an dieser Stelle die Kommatas stehen, damit die Reihenfolge stimmt.
Aber das hat er ja gemacht, einen direkten Fehler sehe ich jetzt nicht, (es sei den, einer der nicht gesetzten Parameter steht auf einem Wert, der einen Treffer verhindert, bspw, MatchCase)
Eine Beispieldatei mit einem Wert , der nicht gefunden wird bzw eine genauere Analyse welche Werte gefunden werden und welche nicht, wären natürlich Hilfreich (insbesondere, da es nur EIN Fall ist)
So ist es halt Glaskugellesen.
ich würde das Problem bei dieser Funktion eher anders sehen:
da bei der Suche nicht auf eine bestimmte Spalte eingeschränkt wird, kann sie ein Ergebnis liefern, wenn der Suchbegiriff in der Suchspalte fehlt, aber in den Daten vorhanden ist. (vorallem bei Suche xlPart)
Hier müsste bei der Suche die Range auf eine Spalte eingeschränkt werden:

Set c = rngMatrix.Columns(xx).Find(strSearch, , xlValues, xlPart).


btw, einen VLOOKUP nach recht kann man sich auch mit Excelfunktionen über die Kombination aus INDEX und MATCH nachbauen, die Fehlerprüfung erfolgt am einfachsten über ein vorangestelltes COUNTIF
noch ein Tip:
die erste IF-Abfrage kannst du dir Sparen, wenn du folgendes schreibst:


Set c = rngMatrix.Find(strSearch, , xlValues, 2-bolWhole)


xlwhole und xlPart sind auch nur Variablen (halt von Excel vorbelegt) mit den werten 1 (xlwhole) und 2 (xlpart).
True entspricht -1 und False entspricht 0, damit kannst du anstelle der IF-Abfrage den Parameter für LookAt:= einfach berechnen.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige