AW: Besondere Ausgabe des ersten und letzten Wortes
03.04.2014 18:11:36
ChristianM
Hallo Christian,
ein Vorschlag mit userdefined function (udf).
Diese Funktionen passen sich bei Einfügen und Löschen von Spalten entsprechend an.
in ein allgemeines Modul:
Option Explicit
Function udfFirstWord(rngSrc As Range) As String
Dim strWords() As String, strWrd As String
Dim strLeft As String, strRght As String
Dim k As Long
strWords = Split(Trim(rngSrc))
For k = 0 To UBound(strWords)
strWrd = strWords(k)
If Not (k = 0 And strWrd = "The") Then
If Len(strWrd) > 1 And InStr(strWrd, ".") = 0 Then
strLeft = Split(strWrd, "-")(0)
Exit For
End If
End If
Next
For k = UBound(strWords) To 0 Step -1
strWrd = strWords(k)
If Len(strWrd) > 1 And InStr(strWrd, ".") = 0 Then
strRght = Split(strWrd, "-")(0)
Exit For
End If
Next
If strLeft strRght Then
udfFirstWord = strLeft
End If
End Function
Function udfLastWord(rngSrc As Range) As String
Dim strWords() As String, strWrd As String
Dim strLeft As String, strRght As String
Dim k As Long
strWords = Split(Trim(rngSrc))
For k = 0 To UBound(strWords)
strWrd = strWords(k)
If Not (k = 0 And strWrd = "The") Then
If Len(strWrd) > 1 And InStr(strWrd, ".") = 0 Then
strLeft = Split(strWrd, "-")(0)
Exit For
End If
End If
Next
For k = UBound(strWords) To 0 Step -1
strWrd = strWords(k)
If Len(strWrd) > 1 And InStr(strWrd, ".") = 0 Then
strRght = Split(strWrd, "-")(0)
Exit For
End If
Next
If strLeft strRght Then
udfLastWord = strRght
End If
End Function
Einträge in der Tabelle:
in D1: =udfFirstWord(A1)
in E1: =udfLastWord(A1)
Diese wie gewohnt nach unten ziehen.
Beachte: jede Funktion berechnet das erste und das letzte Wort. Dies ist erforderlich, da im Fall von gleichem ersten und letzten Wort ein Leerstring erzeugt werden soll.
Gruß
ChristianM