Clever-Excel-Forum

Normale Version: Inhalt trennen bei bestimmten Zeichen außer zu Beginn
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute,

Folgendermaßen schauen meine Rohdaten aus:

% Time (s), X-Axis, Y-Axis, Z-Axis

Code:
0,-1472,1088,15808
0,01,-896,704,15872
0,02,-704,320,15808
0,03,-576,192,15872

Ich versuche aktuell meine Daten in Spalten aufzuteilen und so zu formatieren, dass eine neue Spalte bei einem Komma angelegt wird, außer bei dem ersten Komma der Zeile. Da das erste Komma noch zu meiner Sekundenazeige gehört darf diese nicht fehlen. AUch existiert folgendes "Problem":
Die Sekunde 0, wird nicht als 0,00 angezeigt, somit sind zu ganzen Sekunden nur, 3 Kommas in der Struktur und keine 4. Deshalb komme ich mit der Idee: "Trenne immer ab dem 2 Komma bis Ende" nicht an mein Ziel, da zu ganzen Sekunden falsch getrennt wird.

Ich hoffe jemand könnte mir weiter helfen. Gewünschtes Format wäre:
% Time (s), X-Axis, Y-Axis, Z-Axis
0,00 | -1472 | 1088 | 15808
0,01 | -896  | 704 | 15872

etc. 

Hinweis: Die 2. Spalte beinhaltet nur negative Zahlen.

Liebe Grüße 
Alex
Kannst Du Deine erste Spalte bitte genau beschreiben? Kann sie wie folgt aussehen:

0
0,01
1
12,1
12,12

usw?

Das Problem ist bei so etwas, dass man NIEMALS gleiche Trenner (also nur Komma, statt Komma+Leerzeichen) und Dezimalzeichen nehmen darf! Dadurch, dass die 2. Spalte negativ ist, erreichst Du diese Bedingung am Ende aber noch.

Jetzt habe ich es trotzdem:
=--WENN(SPALTE(A1)=1;
TEIL($A1;1;SUCHEN(",-";$A1)-1);
GLÄTTEN(TEIL(WECHSELN(TEIL($A1;SUCHEN(",-";$A1);99);",";WIEDERHOLEN(" ";99));SPALTE(A1)*99-98;99)))
nach rechts und unten kopieren
Hallo Alex,

per Formel, ohne VBA, ist das schon ne harte Nuss. Ich denke, dass Du hier mit Hilfsspalten am übersichtlichsten fährst.

Hier mein Vorschlag (Wenn deine Daten in A1 beginnen):

In B1:
PHP-Code:
=WENN(LÄNGE($A1)-LÄNGE(WECHSELN($A1;",";))=4;WECHSELN($A1;",";"~";2);WECHSELN($A1;",";"~")) 
Diese Formel bis Spalte D nach rechts und unten ziehen. Danach dann Text in Spalten über Spalte D mit ~ als Trenner laufen lassen.
Hi,

entweder so:

Arbeitsblatt mit dem Namen 'Tabelle1'
 GHI
20,-1472,1088,158080-1472,1088,15808
30,01,-896,704,158720,01-896,704,15872
40,02,-704,320,158080,02-704,320,15808
50,03,-576,192,158720,03-576,192,15872

ZelleFormel
H2=LINKS(G2;SUCHEN(",-";G2)-1)
I2=WECHSELN(G2;H2&",";"")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Bei der zweiten Spalte dann mit kopieren, Inhalte einfügen, Werte die Daten fixieren. Anschließen mit Daten, Text in Spalten auftrennen.

andere Variante:

Daten, Text in Spalten zuerst mit "-" als Trennzeichen, danach mit Komma.

oder:


Arbeitsblatt mit dem Namen 'Tabelle1'
 GH
80,-1472,1088,158080.0,-1472,1088,15808
90,01,-896,704,158720.01,-896,704,15872
100,02,-704,320,158080.02,-704,320,15808
110,03,-576,192,158720.03,-576,192,15872

ZelleFormel
H8=WECHSELN(WECHSELN(G8;"0,-";"0,0,-");",";".";1)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

wieder kopieren, Inhalte einfügen, Werte. Daten, Text in Spalten, Trennzeichen ","
In der ersten Spalte noch die Punkte durch Kommata ersetzen!
Moin Alex,
da du ja 2016 hast hier eine Lösung mit Formeln (und meinem Lieblings-Tool  :05:)...
(07.08.2017, 14:32)lupo1 schrieb: [ -> ]Jetzt habe ich es trotzdem:
=--WENN(SPALTE(A1)=1;
TEIL($A1;1;SUCHEN(",-";$A1)-1);
GLÄTTEN(TEIL(WECHSELN(TEIL($A1;SUCHEN(",-";$A1);99);",";WIEDERHOLEN(" ";99));SPALTE(A1)*99-98;99)))
nach rechts und unten kopieren

Danke euch allen für den Klasse Support. Deine Lösung habe ich letzten Endes verwendet, funktioniert Prima Thumps_up

(07.08.2017, 14:35)Jonas0806 schrieb: [ -> ]
PHP-Code:
=WENN(LÄNGE($A1)-LÄNGE(WECHSELN($A1;",";))=4;WECHSELN($A1;",";"~";2);WECHSELN($A1;",";"~")) 
Diese Formel bis Spalte D nach rechts und unten ziehen. Danach dann Text in Spalten über Spalte D mit ~ als Trenner laufen lassen.

Auch die Lösung hab ich ausprobiert. Klappt auch einwandfrei :D
Vielen lieben Dank

BoskiBiatis Lösung war zwar etwas umständlicher, aber nach langer Fummelei hat auch diese zum Erfolg geführt.

  
(07.08.2017, 17:52)GMG-CC schrieb: [ -> ]...
da du ja 2016 hast hier eine Lösung mit Formeln (und meinem Lieblings-Tool  :05:)...



4 von 4 Beträgen funktionieren alle Lösungswege. Ich danke euch vielmals für eure Unterstützung. Klasse Forum hier

Liebe Grüße Alex
Ein Lob an Dich: Du sagst nicht nur, was Du verwendet hast, sondern hast sogar mehrere Lösungen ausprobiert. Das ist die absolute Ausnahme bei Fragern.
Leute, wieder ein ähnliches Problem...

Dieses Male beinhaltet die 2. Spalte keine negativen Zahlen mehr, sodass die vorherigen Lösungen nicht mehr funktionieren.

Wie meine Messdaten aussehen, habe ich mal hochgeladen in einer .csv

So sehen Sie diesmal aus:

Zeit,Rot,Infrarot,Grün,
0,389,294,68,
0,01,391,289,67,
0,02,380,294,70,
0,03,389,289,68,

Wenn ich in der Lage wäre, den Text von Rechts aus bis zum 4. Komma trennen könnte, dann hätte ich bereits mein Ziel erreicht oder?

Auch hier ist das erwünschte Format:
0 | 389 | 294 | 68|
0,01 | 391 | 289 | 67

Vielen Dank nochmals.

PS: Die Lösung von Jonas klappt nicht für das alte Problem
Eben habe ich Dich noch gelobt. Jetzt muss ich an den Mittelteil von #2 erinnern!

Aber zum Glück geht es trotzdem:

=WENN(SPALTE(A2)=6;
WENNFEHLER($H2&","&$G2;$G2);
GLÄTTEN(TEIL(WECHSELN($A2;",";WIEDERHOLEN(" ";99));(LÄNGE($A2)-LÄNGE(WECHSELN($A2;",";))+2-SPALTE(A2))*99-98;99)))


Fülle jetzt in 6 Spalten aus. Dann verwendest Du Spalte 1,2,3 und 6 fürs Diagramm, nachdem Du vor die Formeln für diese Spalten noch ein -- vorangesetzt hast.

Spalte 4 und 5 nicht!
in VBA:


Code:
Sub M_snb()
   [B1:B100] = Application.Transpose(Split(Replace(Join([transpose(A1:A100)], "_"), "_0,", "_0."), "_"))
   [B1:B100].TextToColumns , , , , 0, 0, -1, 0, 0
End Sub
Seiten: 1 2