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

Split Funktion trennt nicht korrekt

Split Funktion trennt nicht korrekt
23.10.2017 17:19:56
Tobi
Liebes Forum,
ich versuche mehrere Zahlen die mit Leerzeichen getrennt sind, in jeweils verschiedene Zellen zu schreiben. Dabei bin ich auf die Split Funktion gestoßen. Das Problem, sie trennt nicht jedes Element sondern steckt teilweise Wertepaare in den gleichen Array Platz. Was kann ich dagegen tun?
Meine Zahlen sehen so aus:
TextMitte : "3570270.82115698 5652122.92686322 3546673.58077346 5852202.82221356
3516662.4658915 5752162.52313186"
Sie sind also mit einem Leerzeichen getrennt, weshalb ich bei der Split Funktion keinen Delimiter angegeben hab. Nach anwenden der Funktion ergibt sich folgender Array:
arr(0) : "3570270.82115698"
arr(1) : "5652122.92686322 3546673.58077346"
arr(2) : "5852202.82221356 3516662.4658915"
arr(3) : "5752162.52313186"
Hier mein Code:
Sub Trennen()
Dim TextMitte as String
TextMitte = "3570270.82115698 5652122.92686322 3546673.58077346 5852202.82221356
3516662.4658915 5752162.52313186"
Dim arr() As String
arr = Split(TextMitte)
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Split Funktion trennt nicht korrekt
23.10.2017 17:23:51
Hajo_Zi
bei mir wird alles korrekt getrennt. Bis arr(5)

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
AW: Split Funktion trennt nicht korrekt
23.10.2017 17:39:53
Tobi
Vielen Dank für die Antwort. Woran kann das liegen das es bei mir nicht funktioniert?
Anzeige
AW: Split Funktion trennt nicht korrekt
23.10.2017 17:57:15
Hajo_Zi
das kannst nur Du sehen, vielleicht ein Makro Split in der Datei oder Add In.
Gruß Hajo
AW: Split Funktion trennt nicht korrekt
23.10.2017 18:04:40
Luschi
Hallo Tobi,
das kann doch nur bedeuten, daß das Zeichen gar kein Leerzeichen ist, sondern nur so aussieht.
Schreibe diesen Befehl
MsgBox Asc("")
und kopiere das entsprechende Zeichen zwischen die beiden Anführungsstriche.
Wenn dann der Wert 160 statt 32 angezeigt wird, ist das der Beweis, daß da kein Leerzeichen an der Stelle steht.
Gruß von Luschi
aus klein-Paris
AW: Split Funktion trennt nicht korrekt
23.10.2017 18:46:37
Tobi
Danke Daniel und Luschi. Tatsächlich ist nach jedem zweiten Wert ein Zeilenumbruch und kein Leerzeichen (Werte stammen von einer HtmlResponse). Hätte ich mal selber drauf kommen können. Gibt es denn eine Funktion die einen Zeilenumbruch mit einem Leerzeichen ersetzt?
LG Tobi
Anzeige
AW: Split Funktion trennt nicht korrekt
23.10.2017 19:05:13
Daniel
Hi
naja, in meinem anderen Beitrag habe ich dir gezeigt, wie du das Bereinigen kannst.
allerdings für das Zeichen mit Code 160.
für den Zeilenumbruch funktioniert das genauso, nur musst du eben den ASCII-Code des Zeilenumbruchs einsetzen.
In der Regel ist das 10 oder 13, je nach Quelle.
Sollten beide Zeichen in Kombination vorkommen, musst du eben beide auch ersetzen, hierbei dann auf die Reihenfolge achten:
TextMitte = replace(TextMitte, Chr(13) & Chr(10), Chr(10)
Gruß Daniel
AW: Split Funktion trennt nicht korrekt
23.10.2017 19:15:03
Tobi
Danke Daniel. Leider funktioniert es so auch nicht. Muss jetzt auch aufhören. Melde mich wieder am Donnerstag.
Gruß Tobi
Anzeige
AW: Split Funktion trennt nicht korrekt
23.10.2017 19:20:23
Daniel
wie gesagt, du musst schon analysieren, welche Zeichen bzw deren ASCII-Codes den Zeilenumbruch erzeugen und diese dann durch das normale Leerzeichen ersetzen.
ich kenne deine Daten ja nicht, von daher solltest du meine Codes nicht einfach abschreiben, sondern versuchen das Prinzip zu verstehen und für deine Datei angepasst selber zu schreiben.
und wenns nicht funktioniert, dann solltest du auch immer DEINEN Code dazu zeigen und genauer beschreiben, was genau nicht funktionert, bzw was passiert und was deiner Meinung nach passierern sollte (ist wie beim Arzt, wenn du dem nur sagst, dass du Schmerzen hast aber nicht genauer beschreibst wo, dann ist es deutlich schwieriger für ihn, dir zu helfen)
Gruß Daniel
Anzeige
Nicht druckbare Zeichen mit Word sichtbar machen
24.10.2017 10:34:15
Zwenn
Hallo zusammen,
grade letzten Samstag habe ich ebenfalls mit Strings rumgedoktort, die ich aus Internetseiten einlese. Es ging primär darum, mehrfache Zeilenumbrüche zu erkennen und gegen einen einfachen auszutauschen. Also reine Textkosmetik.
Auch ich ging von reinen Excel-Zeilenumbrüchen aus [chr(10), also Line Feed]. Deshalb scheiterte mein Vorhaben zunächst. Ich habe die Strings dann einfach in ein leeres Word Dokument kopiert und auf dieses "fette q" geklickt, um die nicht druckbaren Zeichen anzuzeigen. Das war eine echte Offenbarung. Denn ich konnte sehen, dass neben den einfachen Zeilenumbrüchen [chr(10)], die durch diesen kleinen schwarzen Pfeil symbolisiert werden, auch chr(13) (Carriage Return) Zeilenumbrüche vorhanden waren, die durch dieses "fette q" am Zeilenende symbolisiert werden.
Mit den entsprechenden Parametern für Replace, wie Daniel sie schon nannte, kam ich dann sehr schnell ans Ziel. Vor allem auch, weil auch noch Tabs und Leerzeichen vor Zeilenumbrüchen angezeigt wurden. Aber hier gehts ja "nur" um Zeilenumbrüche, soweit ich es nachvollziehen kann.
Viele Grüße,
Zwenn
Anzeige
OT: "fettes Q" = Steuerzeichen-Schalter, ;-) owT
24.10.2017 11:08:10
Michael
AW: OT: Ich bin Word Laie :-)=) owT
24.10.2017 13:36:42
Zwenn
Geb Dir Recht; sollte eig. "fettes Q" heißen :-)
24.10.2017 13:50:02
Michael
AW: Split Funktion trennt nicht korrekt
27.10.2017 17:08:19
Tobi
Hi Daniel,
ich habe es endlich geschafft. Mein Problem war das ich die ASCII-Codes über den Direktbereich abgefragt habe. Im Endeffekt bin ich auf dieses Ergebnis gekommen:
TextMitte = Replace(TextMitte, Chr(10), Chr(32))
Super großes Dankeschön an dich und an alle die sich die Zeit genommen haben mir zu helfen! :)
Grüße Tobi
Alle Steuerzeichen bereinigen (LF, CR, Tab usw)
24.10.2017 12:31:22
Daniel
Hi
so wie es aussieht, ist der Code mit verschiedenen Steuerzeichen "verseucht".
Zulässig sind jedoch der Beschreibung nach nur Ziffern, Punkt und Leerzeichen.
mit folgendem Code könnte man den Text generell von allen Steuerzeichen bereinigen und aufteilen:
TextMitte = "....."
for i = 1 to Len(TextMitte)
if Mid(TextMitte, i, 1) like "[0-9 .]" then
TextMitteNeu = TextMitteNeu & Mid(TextMitte, i, 1)
else
TextMitteNeu = TextMitteNeu & " "
end if
Next
arr = Split(Worksheetfunction.Trim(TextMitteNeu), " ")
Gruß Daniel
Anzeige
AW: Split Funktion trennt nicht korrekt
23.10.2017 18:00:26
Daniel
Hi
es könnte sein, dass manche Leerzeichen im Text das geschützte Leerzeichen mit ASCII-Code 160 sind.
sollte dies der Fall sein, könntest du das mit:
TextMitte = Replace(TextMitte, Chr(160), Chr(32))
bereinigen (ist vor dem SPLIT auszuführen)
wenn das auch nicht hilft, dann lass mal folgenden Testcode laufen, er zeigt dir die Postion und den ASCII_Code aller Zeichen im Text an, welche keine Ziffern, Punkt oder das normale Leerzeichen sind:
for i = 1 to len(TextMitte)
If not Mid(TextMitte, i, 1) Like "[0-9. ]" then
Debug.Print: "Postion: "; i, "ZeichenCode: "; asc(mid(textmitte, i, 1))
end if
next
Damit könntest du ein unzulässiges Zeichen im Text aufspüren.
Gruß Daniel
Anzeige
Zur Info für neopa u. evtl Interessenten
23.10.2017 19:19:35
Luc:-?
Falls tatsächlich jedes 2. „Leerzeichen“ ein Zeilenumbruch ist (Zeichen10), Tobi,
dürfte das aber nicht als Leerzeichen dargestellt wdn, sondern je nach gewählter Darstellung o/m Zeilenumbruch entweder gar nicht oder in mehreren Zeilen. Folglich kann das hier Gezeigte nicht der OriginalText sein.
Werner, Du kannst das ja mal mit der Dir nun zV stehenden Vs1.5 von VSplit testen. Damit ergäbe sich bei Text in A1 und pluraler MatrixFml über 6 Zeilen mit je 1 Zelle …
{3570270,82115698;5652122,92686322;3546673,58077346;5852202,82221356;3516662,4658915;5752162,52313186}
…mit folgender Fml: {=VSplit(A1;"` ´`"&ZEICHEN(10)&"´";1;1)}
Alle anderen Interessenten könnten folgendes Ergebnis erhalten …
{"3570270.82115698";"5652122.92686322";"3546673.58077346";"5852202.82221356";"3516662.4658915";"5752162.52313186"}
…wenn sie die UDFs SplitVx und VSplit (Vs1.1) in pluraler MatrixFml verwenden:
{=MTRANS(SplitVx(A1;VSplit(" "&ZEICHEN(10);"")))}
Gruß, Luc :-?
Die Intelligenz ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu! Darum informieren mit …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige