Hallo liebe Experten,
Leider hab ich mal wieder ein kleines Problem und ich komme nicht dahinter wie ich diese custom function korrigieren muss damit ich den gewünschten Wert zurück bekomme.
Diese Formel liefert mir eigentlich genau das richtige Ergebnis zurück
=LINKS(TEIL(D2;SUCHEN("Mandatsnummer";D2);256);SUCHEN(" ";TEIL(D2;SUCHEN("Mandatsnummer";D2);256);SUCHEN(" ";TEIL(D2;SUCHEN("Mandatsnummer";D2);256);SUCHEN(" ";TEIL(D2;SUCHEN("Mandatsnummer";D2);256))+1)))
Nur möchte ich diese Formel nun auch als custom function in excel vba erstellen.
Dazu folgender Ansatz
Function ExtraktMandatsnummer(strText As String) As String
Dim intAnzahl As Integer
Dim strSearch As String
strSearch = "Mandatsnummer"
intAnzahl = 256
If IsNull(strText) Then
ExtraktMandatsnummer = Null
Else
' ExtraktMandatsnummer = Left(Mid(strText, Search(strSearch, strText), intAnzahl), Search(" ", Mid(strText, Search(strSearch, strText), intAnzahl) & _
' Search(" ", Mid(strText, Search(strSearch, strText), intAnzahl), Search(" ", Mid(strText, Search(strSearch, strText), intAnzahl)) + 1)))
' ExtraktMandatsnummer = Left(Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256) & _
' WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256)) + 1)))
ExtraktMandatsnummer = Left(Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl) & _
WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl)) + 1)))
End If
End Function
Ich habe die ausgeklammerten Beispiele noch nicht gelöscht damit man erkennen kann welche Arten ich bereits versucht habe.
Wie auch immer ..
Das soll erreicht werden.. in einen Text ist eine Mandatsnummer: xxx-xxx enthalten. Diese Text kann irgendwo im Text enthalten sein.. Wie gesagt die Formel funktioniert und gibt mir alles richtig zurück.
Meine Function aber liefert mir nur Mandatsnummer: also keine Zahlen danach zurück.
Das heist es muss ein Fehler mit den " " im code ein Problem sein..
Was mach ich denn falsch oder was muss ich denn ändern um es zu laufen zu bringen?
Kann mir hier bitte jemand helfen? Wäre schön wenn ich es in einer function nutzen könnte!
Mfg
Albert
P.S.
Hier noch ein paar Beispiel Texte um die Formel zu testen.. und zu sehen wie diese aufgebaut sind.
Tankstelle Waschanlagen Creditor ID: AT05ZZZ00000012747 Mandatsnummer: 161-2323A92A91 Auftraggeberreferenz: 1377 REF: 205061607012AEI-92EC5Q3GU791
Zürich Versicherungs- Aktiengesellschaft Schwarzenbergplatz 15 1015 Wien Creditor ID: AT33ZZZ00000005065 Mandatsnummer: V-045708551-20140805 Auftraggeberreferenz: 045708551 REF: 1200016070111525624692004888
Quick and dirty:Function ExtraktMandatsnummer$(ByVal AText$)
Const FindWhat$ = "Mandatsnummer:"
Dim pos&, endpos&
pos = InStr(AText, FindWhat)
If pos Then
pos = pos + Len(FindWhat)
Do While Mid$(AText, pos, 1) = " "
pos = pos + 1
Loop
endpos = InStr(pos, AText, " ")
If endpos Then
ExtraktMandatsnummer = Mid$(AText, pos, endpos - pos)
Else
ExtraktMandatsnummer = Mid$(AText, pos)
End If
End If
End Function
Hallo Lachtaube,
vielen Dank für Deine Antwort!