Moin! War ein lustiger Spaß zu später Stunde. Also hier mal mein Ergebnis. Hat in den Testläufen geklappt. ggf.als Funktion anlegen und dann immer die Zeile übergeben. Vg
Sub ergänzen()
Dim text As String
Dim temp, temp2, temp3, neu
Dim buchstaben As Long
Dim bst As String
Dim i As Long, j As Long, k As Long
'hier zeilenweise an text übergeben
text = "no untagged A3,A7,A9-A10,A14,A16,A18,B5,B19-B20"
'erstmal nach , trennen
temp = Split(text, ",")
'jetzt alle Abschnitte durchgehen
For i = 0 To UBound(temp)
'noch die Leerzeichen weg
temp2 = Split(temp(i), " ")
'dafür brauchen wir nur noch den letzten Teil nehmen, da gibt keine Leerzeichen
If InStr(1, temp2(UBound(temp2)), "-") <> 0 Then
'jetzt sind wir in der Zelle mit dem -
temp3 = Split(temp2(UBound(temp2)), "-")
'da gibt es nur 2
'länger der Buchstaben
buchstaben = 0
For j = 1 To Len(temp3(0))
If Not IsNumeric(Mid(temp3(0), j, 1)) Then buchstaben = buchstaben + 1
Next j
'nochmal prüfen, ob wir auch richtig sind undkeine Buchstaben mit haben
If IsNumeric(Right(temp3(0), Len(temp3(0)) - buchstaben)) And IsNumeric(Right(temp3(1), Len(temp3(1)) - buchstaben)) Then
bst = ""
bst = Left(temp3(0), buchstaben)
neu = ""
'jetzt neu Zusammenstellen, es wird nicht geprüft, ob die zweite Zahl grölßer ist !!!!!!!!
For k = Right(temp3(0), Len(temp3(0)) - buchstaben) To Right(temp3(1), Len(temp3(1)) - buchstaben)
neu = neu & bst & k & ","
Next k
'das letze , noch weg
temp2(UBound(temp2)) = Left(neu, Len(neu) - 1)
End If
'mit den Leerzeichen von vorher wieder zusammen fügen - sonst fehlt der tagged teil
temp(i) = Join(temp2, " ")
End If
Next i
'alles wieder zusammenfügen mit ,
text = Join(temp, ",")
'fertig
MsgBox text
End Sub
|