Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
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

String
22.12.2012 11:26:23
siegfried
Hallo zusammen,
ich will einen Satz in seine einzelnen Worte zerlegen.
Mit Diesem Code klappt das auch, bis auf die Kleinigkeit, dass ein vorkommender Punkt (Aufzählungszeichen) unterschlagen wird.
Sub Satz_zerlegen()
Dim AnzEinträge As Integer, i1 As Integer
Dim iCol As Integer, WortZähler As Integer
Dim Wort As String
AnzEinträge = WorksheetFunction.CountA(Columns(1))
For i1 = 1 To AnzEinträge
WortZähler = 0
iCol = 3
Wort = Range("B1").Offset(i1, 0).Value
Do While InStr(Wort, " ")
iCol = iCol + 1
WortZähler = WortZähler + 1
Cells(1, iCol).Offset(i1, 0).Value = Left(Wort, InStr(Wort, " ") - 1)
Wort = Right(Wort, Len(Wort) - InStr(Wort, " "))
Loop
Cells(1, iCol + 1).Offset(i1, 0).Value = Wort
Next i1
End Sub
Was muss ich machen, dass der Punkt bei dem entsprechenden Wort angezeigt wird?
Gruß
Siegfried

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String
22.12.2012 11:31:05
ransi
Hallo
Ersetz doch vorher die "." (Punkte) durch " " (Leerzeichen)
;-)
ransi

AW: String
22.12.2012 11:43:42
siegfried
Hallo Ransi,
den Punkt brauch ich
mit Deinem Vorschlag handle ich mir das nächste Problem ein, welches der Leerzeichen wurde zuvor umgewandelt.
Die Idee ist schon, alle Zeichen bis zu den Leerzeichen zu erfassen.
Gruß
Siegfried

AW: String
22.12.2012 13:39:45
Tino
Hallo,
kannst mal so versuchen.
Ich ersetzen den Punkt durch ein "Punkt Tabulator Leer" und
später "Punkt Tabulator" wieder durch ein Punkt
Sub Satz_zerlegen()
Dim n&, AnzEinträge&, nn&
Dim sString$, varValue, arAusgabe()

AnzEinträge = WorksheetFunction.CountA(Columns(1))

For n = 1 To AnzEinträge
    sString = Cells(n, 2).Value
    sString = Replace(sString, ".", "." & vbTab & " ")
    varValue = Split(sString, " ")
    Redim Preserve arAusgabe(1 To 1, 1 To Ubound(varValue) + 1)
    For nn = Lbound(varValue) To Ubound(varValue)
        arAusgabe(1, nn + 1) = Replace(varValue(nn), "." & vbTab, ".")
    Next nn
    Cells(n, 3).Resize(, Ubound(arAusgabe, 2)) = arAusgabe
    Erase arAusgabe: varValue = Empty
Next n
End Sub
Gruß Tino

Anzeige
AW: String
22.12.2012 14:13:26
siegfried
Hallo Tino,
wenn ich mit meinem Code des Satz zerlege und die einzelnen Worte im Direktfenster anzeigen lasse, erscheint der Punkt dort aber seltsamerweise nicht, wenn ich das Wort in eine Zelle schreibe.
Das gleiche geschieht bei Deinem Code, mit dem Unterschied, dass bei Deinem Code eine freie Zelle ohne einen Inhalt eingefügt wird.
Das bringt mich leider auch nicht weiter.
Dennoch Danke
Gruß
Siegfried

AW: String
22.12.2012 14:30:15
Tino
Hallo,
dann hast Du wahrscheinlich doppelte Leerzeichen im Text.
Versuch mal so oder Zeige mal ein bar Textbeispiele.
Sub Satz_zerlegen()
Dim n&, AnzEinträge&, nn&, nnn&
Dim sString$, varValue, arAusgabe()

AnzEinträge = WorksheetFunction.CountA(Columns(1))

For n = 1 To AnzEinträge
    sString = Cells(n, 2).Value
    sString = Replace(sString, ".", "." & vbTab & " ")
    varValue = Split(sString, " ")
    Redim Preserve arAusgabe(1 To 1, 1 To Ubound(varValue) + 1)
    For nn = Lbound(varValue) To Ubound(varValue)
        varValue(nn) = Trim$(Replace(varValue(nn), "." & vbTab, "."))
        If varValue(nn) <> "" Then
            nnn = nnn + 1
            arAusgabe(1, nnn) = varValue(nn)
        End If
    Next nn
    Cells(n, 3).Resize(, Ubound(arAusgabe, 2)) = arAusgabe
    Erase arAusgabe: varValue = Empty: nnn = 0
Next n
End Sub
Gruß Tino

Anzeige
AW: String
22.12.2012 14:59:49
siegfried
Hallo Tino,
Dein neuer Code funktioniert wie der zuvor.
Mit Bastelarbeit käme ich damit natürlich schon weiter, indem ich die freie Zelle (sie entspräche dem Punkt) entsprechend auswerte.
Meine Idee ist unverändert, in einem Zug die vollständigen Worte zu finden , also "2." statt "2"
Offensichtlich ist bei meinem Code und auch bei Deinem der Punkt das Problem.
Die zu zerlegenden Sätze, beziehe ich aus einer fremden Quelle. Insofern kann ich auch nicht sichergehen, dass die üblichen Regeln im Umgang mit Leerzeichen immer eingehalten werden.
Im konkreten Fall allerdings schon.
Hier ein Auszug der zu untersuchenden Sätze:
Deutscher Tischtennis-Bund 2012/13 Tischtennis Bundesliga
Deutscher Tischtennis-Bund 2012/13 2. Bundesliga Herren Nord
Deutscher Tischtennis-Bund 2012/13 2. Bundesliga Herren Süd
Regional- und Oberligen Nord 2012/13 Regionalliga Herren Nord
Gruß
Siegfried

Anzeige
AW: String
22.12.2012 15:26:09
Tino
Hallo,
Du meins bestimmt den Punkt bei 2., formatiere die Zielzellen als Text,
dann bleibt auch der Punkt erhalten.
Sub Satz_zerlegen()
Dim n&, AnzEinträge&, nn&, nnn&
Dim sString$, varValue, arAusgabe()

AnzEinträge = WorksheetFunction.CountA(Columns(1))

For n = 1 To AnzEinträge
    sString = Cells(n, 2).Value
    sString = Replace(sString, ".", "." & vbTab & " ")
    varValue = Split(sString, " ")
    Redim Preserve arAusgabe(1 To 1, 1 To Ubound(varValue) + 1)
    For nn = Lbound(varValue) To Ubound(varValue)
        varValue(nn) = Trim$(Replace(varValue(nn), "." & vbTab, "."))
        If varValue(nn) <> "" Then
            nnn = nnn + 1
            arAusgabe(1, nnn) = varValue(nn)
        End If
    Next nn
    With Cells(n, 3).Resize(, Ubound(arAusgabe, 2))
        .NumberFormat = "@"
        .Value = arAusgabe
    End With
    Erase arAusgabe: varValue = Empty: nnn = 0
Next n
End Sub
Ergebnis ist bei mir dann so.
 BCDEFGHIJ
1Deutscher Tischtennis-Bund 2012/13 Tischtennis BundesligaDeutscherTischtennis-Bund2012/13TischtennisBundesliga   
2Deutscher Tischtennis-Bund 2012/13 2. Bundesliga Herren NordDeutscherTischtennis-Bund2012/132.BundesligaHerrenNord 
3Deutscher Tischtennis-Bund 2012/13 2. Bundesliga Herren SüdDeutscherTischtennis-Bund2012/132.BundesligaHerrenSüd 
4Regional- und Oberligen Nord 2012/13 Regionalliga Herren NordRegional-undOberligenNord2012/13RegionalligaHerrenNord

Gruß Tino

Anzeige
AW: String
22.12.2012 16:08:05
siegfried
Hallo Tino,
genau um den Punkt bei "2." geht es.
Danke für Deine Hilfe
Gruß und besinnliche Tage
Siegfried

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige