Benutzer mit den meisten Antworten
Excel-Formel: Einfügen von Zeichen nach Anzahl Zeichen und Wort

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- Bearbeitet Robert BreitenhoferModerator Dienstag, 16. Februar 2010 15:59 <!-- contentDetection end --> rausgenommen
Antworten
-
Hallo niklausa,
Lösung ist hier: http://www.office-loesung.de/ftopic366589_0_0_asc.php&sid=bf473baf93ae38b840c0fe91d49d8523
Grüße,
Robert
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 21. September 2010 13:56
Alle Antworten
-
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
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 23. Februar 2010 16:06
- Tag als Antwort aufgehoben Robert BreitenhoferModerator Dienstag, 21. September 2010 13:56
-
Hallo niklausa,
Lösung ist hier: http://www.office-loesung.de/ftopic366589_0_0_asc.php&sid=bf473baf93ae38b840c0fe91d49d8523
Grüße,
Robert
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 21. September 2010 13:56
-
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.«