Office - Word, Excel und Co. 9.738 Themen, 41.366 Beiträge

Nun nochmal Olafs Zeichenkettenproblem.

peterson / 12 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
neanderix peterson „Nun nochmal Olafs Zeichenkettenproblem.“
Optionen

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

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen