none
Excel-Formel: Einfügen von Zeichen nach Anzahl Zeichen und Wort RRS feed

  • Frage

  • Geschätzte Excel-Profis

    Ich suche für folgendes Problem eine Formel

    Ich habe eine Zelle mit Text, welcher in ein Warenbewirtschaftungssystem eingelesen werden soll. Damit die Ausdrucke immer richtig angedruckt werden muss jeweils nach max. 40 Zeichen ein '\' vorhanden sein.

    Wie bringe ich die '\' hinein und stelle sicher, dass kein Wort 'abgeschnitten wird?
    Wie kann ich in der Formel bestimmen, nach welchem Wort das '\' eingefügt werden soll?


    Jetzt: Hohlflachprofile Nicht Gelocht Sand Eloxiert 1000x30x5mm
    Jetzt: Jowat 460.56 (Contact Styropor 455) Kontaktkleber 850Gr Voc Lenkabgabe Inbeg Chf 1,59

    Nachher: Hohlflachprofile Nicht Gelocht Sand Eloxiert\1000x30x5mm
    Nachher: Jowat 460.56 (Contact Styropor 455)\Kontaktkleber 850Gr\Voc Lenkabgabe Inbeg Chf 1,59



    Danke für eure Feedbacks.

    NB. Bin (noch) kein VBA-Anwender
    Dienstag, 16. Februar 2010 11:26

Antworten

Alle Antworten

  • Hallo niklausa,

    Frage: Warum gibt es nachher noch ein \“ Zeichen zwischen “850Gr“ und “Voc“?

    Grüße,

    Robert

    Dienstag, 16. Februar 2010 17:28
    Moderator
  • Hallo niklausa,

    Habe als Startpunkt etwas gestrickt indem die einzelnen Wörter Aufgeteilt werden. Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.


    Sub testtext()
    
        Dim mystring1 As String
        Dim mystring2 As String
        
        
        mystring1 = "Hohlflachprofile Nicht Gelocht Sand Eloxiert 1000x30x5mm"
        mystring2 = "Jowat 460.56 (Contact Styropor 455) Kontaktkleber 850Gr Voc Lenkabgabe Inbeg Chf 1,59"
        
        Call fncSpPos(mystring2, 20)
        
    End Sub
    Function fncSpPos(strPassedString As String, iNum As Integer) As Integer
    
    fncSpPos = 0
    
    Dim myfinalstring As String
    Dim myflag As Boolean
    
    myfinalstring = ""
    myflag = False
    While Len(strPassedString) And (iNum > 0)
        If InStr(1, strPassedString, " ") Then
            fncSpPos = fncSpPos + InStr(1, strPassedString, " ")
            part1 = strPassedString
            strPassedString = Mid(strPassedString, InStr(1, strPassedString, " ") + 1)
            part2 = strPassedString
            
            If Len(myfinalstring + Left(part1, Len(part1) - Len(part2) - 1)) < 40 Then
                myfinalstring = myfinalstring + " " + Left(part1, Len(part1) - Len(part2) - 1)
            Else
                If Not myflag Then
                myfinalstring = myfinalstring + "/" + Left(part1, Len(part1) - Len(part2) - 1)
                myflag = True
                Else
                myfinalstring = myfinalstring + " " + Left(part1, Len(part1) - Len(part2) - 1)
                End If
                
                
            End If
           
            
            iNum = iNum - 1
        Else
            fncSpPos = 0
            myfinalstring = myfinalstring + " " + part2
            Exit Function
        End If
    Wend
    
    If iNum Then fncSpPos = 0
    
    End Function


    Grüße,

    Robert

    Dienstag, 23. Februar 2010 16:06
    Moderator
  • Dienstag, 21. September 2010 13:56
    Moderator
  • Hallo!

    Das kommt mir doch aus dem CHIP-Forum bekannt vor…

    Dort wurde sehr bewusst die Frage gestellt ob die Trennzeichen einfach brutal auch innerhalb von Wörtern auftreten sollen.

    Weiterhin erklärst du nicht ob wir Leerzeichen einfach okkupieren dürfen (also ersetzen), und welcher Logik folgt die Verteilung zweiten Beispiel? Zwischen ‹455)\› und ‹850Gr\› liegen keine 40 Zeichen; und was unterscheidet das Leerzeichen in ‹850Gr Voc› von dem in ‹Voc Lenkabgabe›?

    Auch in verlinkten »Lösung« wie du sie angibst sehe ich in keiner Formel eine Logik die flexibel genug wäre das alles abzufangen.

    Eric


    Eric March • »Kenne die Vergangenheit! In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
    Mittwoch, 22. September 2010 06:34