Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
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
Inhaltsverzeichnis

Sverweis Funktion als Makro

Sverweis Funktion als Makro
27.02.2019 13:07:17
Oetzi
Hallo zusammen,
da ich in der VBA/Makro-Thematik neu unterwegs bin, hätte ich eine Frage an die Experten. :)
Folgende Ausgangssituations:
Ich habe eine Art Sverweis-Funktion gebraucht, welche mehrere Treffer ausgibt. Es können mehrere Zeilen das Suchkriterium enthalten und es soll dann ein anderer Wert in der Zeile ausgegeben werden.
Da meine VBA-Programmierkenntnisse leider nicht soweit ausreichen, habe ich mich auf die Suche im Internet begeben und folgendes gefunden.
_______________________________________________________

Public Function SVERWEIS2(Kriterium As String, Bereich As Range, SuchSpalte As Integer, _
ErgebnissSpalte As Integer, welcher_wert As Long) As String
Application.Volatile
Dim arrTmp
Dim arr()
Dim L As Long
Dim z
z = 1
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
If arrTmp(L, SuchSpalte) = Kriterium Then
ReDim Preserve arr(z)
arr(z) = arrTmp(L, ErgebnissSpalte)
z = z + 1
End If
Next
SVERWEIS2 = arr(welcher_wert)
End Function

__________________________________________________
Diese Funktion funktioniert hervoragend. Jedoch gibt es noch ein Problem, welches es zu lösen gilt.
Es kann vorkommen, dass mehrere Werte in einer Zelle vorhanden sind und dann das Suchkriterium nicht gefunden wird und folglich auch kein Wert ausgegeben.
Bsp: Suchkriterium = "X" / Zelle in Suchspalte enthält "Y";"X";"Z"
Gibt es eine Möglichkeit eine "ungefähre Suche" in diese Funktion einzubauen, sodass mein Suchkriterium gefunden wird?
Wäre super, wenn mir jemand helfen könnte.
Gruß

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis Funktion als Makro
27.02.2019 13:33:13
Daniel
Hi
du könntest das
If arrTmp(L, SuchSpalte) = Kriterium Then

umbauen in
If arrTmp(L, SuchSpalte) Like Kriterium Then
bei LIKE kann man die Jokerzeichen "*", "?", "#" verwenden.
dh wenn die Suchoption sein soll: enthält Y
dann gibst du "*Y*" als Parameter an.
bzw ich würde das Application.Volatil hier weglassen, das brauchst du nicht.
Application.Volatil ist nur erforderlich, wenn die Funktion Zellen verwendet, die nicht in den Eingabeparametern angegeben sind.
Gruß Daniel
Anzeige
AW: Sverweis Funktion als Makro
27.02.2019 18:14:52
Oetzi
Hi Daniel,
Danke dir für deine Antwort.
Ich habe deinen Vorschlag umgesetzt, jedoch leider ohne Erfolg.
Public Function SVERWEIS2(Kriterium As String, Bereich As Range, SuchSpalte As Integer, _
ErgebnissSpalte As Integer, welcher_wert As Long) As String
Dim arrTmp
Dim arr()
Dim L As Long
Dim z
z = 1
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
If arrTmp(L, SuchSpalte) Like Kriterium Then
ReDim Preserve arr(z)
arr(z) = arrTmp(L, ErgebnissSpalte)
z = z + 1
End If
Next
SVERWEIS2 = arr(welcher_wert)
End Function
Ich erhalte das gleiche Ergebnis wie vorher.
Wenn ich "Kriterium" schreibe, dann bekomme ich #WERT als Fehler.
Mache ich etwas falsch, bzw. hat jemand einen weiteren Vorschlag?
Gruß Markus
Anzeige
AW: Sverweis Funktion als Makro
27.02.2019 18:53:51
Oetzi
Hi Daniel,
ich bin es nochmal
Ich habe nochmal Recherche betrieben und habe den Code folgendermaßen geändert.
Nun funktioniert es.
Danke für den Denkanstoß!! :)
If arrTmp(L, SuchSpalte) Like "*" & Kriterium & "*" Then
Gruß
Markus
AW: Sverweis Funktion als Makro
28.02.2019 09:33:35
Daniel
Kannst du machen, aber dann ist dein SVerweis2 nicht mehr variabel und verwendet immer die Suchoption "enthält" und du kannst nicht mehr mit "entspricht genau" suchen.
Ich hätte es bei arr LIKE Kriterum belassen und dafür dann den SVerweis angepasst:
=SVerweis2("*"&A1&"*";...)
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige