Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

String trennen

String trennen
11.04.2009 19:17:21
Ernst
Bitte Hilfe suche schon seit Stunden aber ich brings nicht hin.
Habe in Spalte A mehrere verschiedene Strings die es zu trennen gilt näheres im Angang!
https://www.herber.de/bbs/user/61147.xls

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String trennen
11.04.2009 19:34:11
Tino
Hallo,
versuche es mal hiermit, habe aber keine Fehlerüberprüfung eingebaut.
Groß und Kleinschreibung wird beachtet.
Sub Test() Dim Bereich As Range Dim myAr Dim ErsterS As String, ZweiterS As String Dim i As Long ErsterS = InputBox("1. Suchbegriff") ZweiterS = InputBox("2. Suchbegriff") Set Bereich = Range("A1", Cells(Rows.Count, 1).End(xlUp).Offset(0, 2)) myAr = Bereich For i = 1 To Ubound(myAr) If myAr(i, 1) <> "" Then If myAr(i, 1) Like ErsterS & "*" Then myAr(i, 2) = ErsterS myAr(i, 3) = Right$(myAr(i, 1), Len(myAr(i, 1)) - Len(ErsterS)) ElseIf myAr(i, 1) Like ZweiterS & "*" Then myAr(i, 2) = ZweiterS myAr(i, 3) = Right$(myAr(i, 1), Len(myAr(i, 1)) - Len(ZweiterS)) Else myAr(i, 2) = Left$(myAr(i, 1), 1) myAr(i, 3) = Right$(myAr(i, 1), Len(myAr(i, 1)) - 1) End If End If Next i Bereich = myAr End Sub


Gruß Tino

Anzeige
AW: String trennen
11.04.2009 20:08:17
Ernst
Danke erstmal für die mühe aber hauptsächlich sollten Zahlen vom Text getrennt werden zb. AL23 AL und 23 (habe ich leider im bsp. übersehen)
Die Inputbox brauche ich sozusagen für Sonderfälle wo der Umbruch zwischen zwei Buchstaben liegen soll.
AW: String trennen
11.04.2009 19:48:25
robert
hi,
hier mit formeln
gruß
robert
Tabelle1

 ABC
8QLA1QLA1
9QLB4QLB4
10QL345QL345
11XBAXBA
12X334X334
13A34A34
14A23aA23a
15   

Formeln der Tabelle
ZelleFormel
B8=WENN(LINKS(A8;2)="QL";LINKS(A8;2); LINKS(A8;1))
C8=WENN(LINKS(A8;2)="QL";RECHTS(A8;LÄNGE(A8)-2); RECHTS(A8;LÄNGE(A8)-1))
B9=WENN(LINKS(A9;2)="QL";LINKS(A9;2); LINKS(A9;1))
C9=WENN(LINKS(A9;2)="QL";RECHTS(A9;LÄNGE(A9)-2); RECHTS(A9;LÄNGE(A9)-1))
B10=WENN(LINKS(A10;2)="QL";LINKS(A10;2); LINKS(A10;1))
C10=WENN(LINKS(A10;2)="QL";RECHTS(A10;LÄNGE(A10)-2); RECHTS(A10;LÄNGE(A10)-1))
B11=WENN(LINKS(A11;2)="QL";LINKS(A11;2); LINKS(A11;1))
C11=WENN(LINKS(A11;2)="QL";RECHTS(A11;LÄNGE(A11)-2); RECHTS(A11;LÄNGE(A11)-1))
B12=WENN(LINKS(A12;2)="QL";LINKS(A12;2); LINKS(A12;1))
C12=WENN(LINKS(A12;2)="QL";RECHTS(A12;LÄNGE(A12)-2); RECHTS(A12;LÄNGE(A12)-1))
B13=WENN(LINKS(A13;2)="QL";LINKS(A13;2); LINKS(A13;1))
C13=WENN(LINKS(A13;2)="QL";RECHTS(A13;LÄNGE(A13)-2); RECHTS(A13;LÄNGE(A13)-1))
B14=WENN(LINKS(A14;2)="QL";LINKS(A14;2); LINKS(A14;1))
C14=WENN(LINKS(A14;2)="QL";RECHTS(A14;LÄNGE(A14)-2); RECHTS(A14;LÄNGE(A14)-1))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Anzeige
Noch ne Variante
11.04.2009 20:06:32
Ramses
Hallo
Damit wärest du nicht limitiert, für den Fall der Fälle, mit den Suchparametern
Option Explicit
Option Base 1

Sub Divide_String()
    Dim strArr() As String, foundArr As Boolean
    Dim chkStr As String, tmpPara As String
    Dim i As Long, n As Long
    Dim chkCol As Long
    chkCol = 1 'Spalte A
    ReDim Preserve strArr(1)
    Do
        For n = 1 To UBound(strArr)
            tmpPara = tmpPara & strArr(n) & ";"
        Next n
        If tmpPara = ";" Then
            tmpPara = ""
        Else
            tmpPara = Left(tmpPara, Len(tmpPara) - 1)
        End If
        chkStr = InputBox("Geben Sie einen Trennparameter an" & vbCrLf & _
        "Wenn keine weitere Eingabe, dann drücken sie ""ABBRECHEN""" & vbCrLf & _
        "Bisherige Suchparameter: " & vbCrLf & _
        tmpPara, "Eingabe")
        If StrPtr(chkStr) <> 0 Then
            strArr(UBound(strArr)) = chkStr
            ReDim Preserve strArr(UBound(strArr) + 1)
        End If
        tmpPara = ""
    Loop Until StrPtr(chkStr) = 0
    For i = 1 To Cells(Rows.Count, chkCol).End(xlUp).Row
        With Cells(i, chkCol)
            For n = 1 To UBound(strArr) - 1
                If Left(.Value, Len(strArr(n))) = strArr(n) Then
                    .Offset(0, 1) = strArr(n)
                    .Offset(0, 2) = Right(.Value, Len(.Value) - Len(strArr(n)))
                    foundArr = True
                    Exit For
                End If
            Next n
            If foundArr = False Then
                For n = 1 To Len(.Value)
                    If IsNumeric(Mid(.Value, n, 1)) Then
                        .Offset(0, 1) = Left(.Value, n - 2)
                        .Offset(0, 2) = Right(.Value, Len(.Value) - n + 2)
                    End If
                Next n
            End If
            foundArr = False
        End With
    Next i
End Sub

Gruss Rainer
Anzeige
AW: Noch ne Variante
11.04.2009 20:14:36
Ernst
Oh gleich so viele Antworten danke erstmal allen
Das von Ramses scheint für mich perfekt zu funktionieren
Problem erledigt.
Danke
AW: Noch ne Variante
11.04.2009 20:45:39
Ernst
Funkt leider doch nicht ganz. zb. aus ZB3 wird Z und B3, und aus QL234 wird QL2 und 34.
Habe momentan noch keine Ahnung warum.
Kann man nicht zuerst abfragen ob Trennparameter enthalten ist und wenn nicht nach Zahlen und Buchstaben Trennen?
Exit For
11.04.2009 21:03:45
Ramses
Hallo
... hat in der letzten Prüfung gefehlt
Probier mal
Option Explicit
Option Base 1

Sub Divide_String()
    Dim strArr() As String, foundArr As Boolean
    Dim chkStr As String, tmpPara As String
    Dim i As Long, n As Long
    Dim chkCol As Long
    chkCol = 1 'Spalte A
    ReDim Preserve strArr(1)
    Do
        For n = 1 To UBound(strArr)
            tmpPara = tmpPara & strArr(n) & ";"
        Next n
        If tmpPara = ";" Then
            tmpPara = ""
        Else
            tmpPara = Left(tmpPara, Len(tmpPara) - 1)
        End If
        chkStr = InputBox("Geben Sie einen Trennparameter an" & vbCrLf & _
        "Wenn keine weitere Eingabe, dann drücken sie ""ABBRECHEN""" & vbCrLf & _
        "Bisherige Suchparameter: " & vbCrLf & _
        tmpPara, "Eingabe")
        If StrPtr(chkStr) <> 0 Then
            strArr(UBound(strArr)) = chkStr
            ReDim Preserve strArr(UBound(strArr) + 1)
        End If
        tmpPara = ""
    Loop Until StrPtr(chkStr) = 0
    For i = 1 To Cells(Rows.Count, chkCol).End(xlUp).Row
        With Cells(i, chkCol)
            For n = 1 To UBound(strArr) - 1
                If Left(.Value, Len(strArr(n))) = strArr(n) Then
                    .Offset(0, 1) = strArr(n)
                    .Offset(0, 2) = Right(.Value, Len(.Value) - Len(strArr(n)))
                    foundArr = True
                    Exit For
                End If
            Next n
            If foundArr = False Then
                For n = 1 To Len(.Value)
                    If IsNumeric(Mid(.Value, n, 1)) Then
                        .Offset(0, 1) = Left(.Value, n - 1)
                        .Offset(0, 2) = Right(.Value, Len(.Value) - n + 1)
                        Exit For
                    End If
                Next n
            End If
            foundArr = False
        End With
    Next i
End Sub

Dann sieht es so aus
Tabelle2

 ABC
1ZB3ZB3
2QLB4QLB4
3QL345QL345
4XBAXBA
5X334X334
6A34A34
7A23aA23a
8QLA1QLA1
9QL234QL234


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruss Rainer
Anzeige
AW: Exit For
11.04.2009 21:13:22
Ernst
Ok geil sieht gut aus danke
AW: String trennen
11.04.2009 20:09:43
Gerd
Hallo Ernst!

Sub t()
Dim i As Long, L As Byte
For i = 1 To 500
L = 2
If IsNumeric(Mid$(Cells(i, 1), 2, 1)) Then L = 1
If Len(Cells(i, 1)) = 3 And Not IsNumeric(Right$(Cells(i, 1), 1)) Then L = 1
Cells(i, 2) = Left$(Cells(i, 1), L)
Cells(i, 3) = Right$(Cells(i, 1), Len(Cells(i, 1)) - L)
Next
End Sub


Gruß Gerd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige