Kopiere dieses Makro mal in Dein Excel rein und führe es aus.
Das Ergebnis bekommst Du dann für die einfachere Erklärung in Message-Boxen.
Ich denke mal, das kannst Du leicht an Dein Problem anpassen.
********************************************************************
Public Sub Olaf()
Dim strText As String
Dim Start As Integer
Dim Mitte As Integer
Dim Ende As Integer
strText = "180:100:10:25"
Start = InStr(1, strText, ":")
Mitte = InStr(Start + 1, strText, ":")
Ende = InStr(Mitte + 1, strText, ":")
MsgBox "Vorne = " & Mid(strText, 1, Start - 1)
MsgBox "Teil1 = " & Mid(strText, Start + 1, Mitte - (Start + 1))
MsgBox "Teil2 = " & Mid(strText, Mitte + 1, Ende - (Mitte + 1))
MsgBox "Teil3 = " & Mid(strText, Ende + 1, Len(strText) - Ende)
End Sub
Office - Word, Excel und Co. 9.738 Themen, 41.366 Beiträge
Ist ja nett, allerdings hat deine Routine einige Schönheitsfehler:
1. gehst du davon aus, dass ein solcher String immer max. vierteilig ist
2. gehst du davon aus, dass der Trenner immer der Doppelpunkt ist
3. ist sie programmiertechnisch zu aufwändig ;)
Meine Lösung:
Public Function ZahlenExtrahieren(text As String, trenner As String, position As Long) As Long
'nichtdimensiniertes Array fuer die Rueckgabe der Spit Funktion
Dim numbers() As String
'dummy für MsgBox
Dim a As Long
'auftrennen des Strings mittels Split
numbers() = Split(text, trenner)
'rückgabe der an der angegebenen position befindlichen Zahl im Strin
'falls Positionsangabe > anzahl Zahlen, Meldung
If position <= UBound(numbers) Then
ZahlenExtrahieren = numbers(position - 1)
Else
a = MsgBox("ungültige Positionsangabe", vbInformation)
End If
End Function
Aufrufbar als Funktion im Spreadsheet und, wenn in die Personl.xls kopiert, aus *jedem* Spreadsheet.
Syntax:
ZahlenExtrahieren(string, trenner, position-gewünschte-zahl)
Beispiel:
ZahlenExtrahieren("100:20:30:10";":";1) => 100
ZahlenExtrahieren("100:20:30:10";":";2) => 20
ZahlenExtrahieren("100:20:30:10";":";3) => 30
ZahlenExtrahieren("100:20:30:10";":";4) => 10
Genausogut können alle Werte als Zellbezüge übergeben werden.
Volker