Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Buchstaben an variablen Stellen im Text tauschen

Buchstaben an variablen Stellen im Text tauschen
01.10.2019 12:01:31
Piotrek
Hallo Zusammen,
Ich habe einen Text:
2,83,114,-0,086,2,351,2,353,92,089
Nun soll das 1-te, 3-te, 5-te, 7-te und 9-te Komma durch ein Leerzeichen ersetzt
werden.
Anschließend soll die einzelnen Zahlen in Spalten aufgeteilt werden.
Leider komme ich überhaupt nicht weiter.
Habt Ihr einen Vorschlag wie ein Code dazu aussehen könnte?
Für Eure Antworten bedanke ich mich im voraus.
LG, Peter
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buchstaben an variablen Stellen im Text tauschen
01.10.2019 12:28:52
Rudi
Hallo,
eine Möglichkeit:
Sub aaa()
Dim strIN As String, strOUT As String
Dim bolKOMMA As Boolean
Dim i As Integer
Dim vntOUT
strIN = ActiveCell
For i = 1 To Len(strIN)
If Mid(strIN, i, 1) = "," Then
bolKOMMA = Not bolKOMMA
If bolKOMMA Then
strOUT = strOUT & " "
Else
strOUT = strOUT & ","
End If
Else
strOUT = strOUT & Mid(strIN, i, 1)
End If
Next i
vntOUT = Split(strOUT)
ActiveCell.Resize(, UBound(vntOUT) + 1) = vntOUT
End Sub

Gruß
Rudi
Anzeige
AW: Buchstaben an variablen Stellen im Text tauschen
01.10.2019 13:20:05
Piotrek
Hallo Rudi,
super, es funktioniert.
Ich verstehe es noch nicht wie es funktioniert, werde aber Zeile für Zeile durchgehen, um es zu verstehen.
Vielen, vielen Dank!
Lg, Peter
Ärgerlich
01.10.2019 13:23:18
Daniel
wenn du im neuen Thread weitermachst und den alten nicht mehr beachtst.
dort hast du von mir eine vergleichbare Lösung bekommen, warum höre ich dort nichts mehr von dir?
Anzeige
AW: Buchstaben an variablen Stellen im Text tauschen
01.10.2019 12:58:00
Daniel
Hi
1. schreibe den bzw die Texte zunächst einmal ohne Aufteilung so wie er ist in eine Zelle.
2. schreibe in die Nachbarzelle die Formel:
=Wechseln(Wechseln(Wechslen(Wechseln(A1;",";" ";9);",";" ";7);",";" ";5);",";" ";3);",";" ";1)

3. kopiere die Formel und füge sie als Wert in Spalte A wieder ein, lösche Spalte B
4. wende dann den Menüpunkt DATEN - DATENTOOLS - TEXT IN SPALTEN mit dem Leerzeichen als Trennzeichen auf die Zellen an.
mach das erstmal von Hand.
wenn das Wunschergebnis passt, sollte es dir nicht schwerfallen, diese Schritte in VBA-Code umzusetzen (der Recorder hilft)
Beachte, dass du in VBA beim Text-in-Spalten das Dezimalzeichen vorgeben musst (WEITERE in Schritt 3), weil ohne Vorgabe in VBA die amerikanischen Zahlenformate für die Umwandlung verwendet werden (Dezimalpunkt)
Gruß Daniel
Anzeige
ansonsten, warum nicht so wie ich dir
01.10.2019 13:02:20
Daniel
schon im alten Thread vorgeschlagen habe?
da hier jedes ungerade Komma ausgetauscht werden muss, mit der Bedingung
If z Mod 2 = 1 then
https://www.herber.de/forum/messages/1715669.html
Gruß Daniel
Anzeige
nur mit Formeln...
01.10.2019 13:05:23
UweD
Hallo

Tabelle1
 ABCDEFG
12,83,114,-0,086,2,351,2,353,92,089283,114-0,0862,3512,35392,089

verwendete Formeln
Zelle Formel Bereich N/A
B1=--LINKS(A1;FINDEN(",";A1)-1)  
C1=--TEIL(A1;LÄNGE(B1)+2;FINDEN("#";WECHSELN(A1;",";"#";3))-LÄNGE(B1)-2)  
D1=--TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+3;FINDEN("#";WECHSELN(A1;",";"#";5))-LÄNGE(B1)-LÄNGE(C1)-3)  
E1=--TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+LÄNGE(D1)+4;FINDEN("#";WECHSELN(A1;",";"#";7))-LÄNGE(B1)-LÄNGE(C1)-LÄNGE(D1)-4)  
F1=--TEIL(A1;LÄNGE(B1)+LÄNGE(C1)+LÄNGE(D1)+LÄNGE(E1)+5;FINDEN("#";WECHSELN(A1;",";"#";9))-LÄNGE(B1)-LÄNGE(C1)-LÄNGE(D1)-LÄNGE(E1)-5)  
G1=--TEIL(A1;FINDEN("#";WECHSELN(A1;",";"#";9))+1;999)  


LG UweD
Anzeige
Einfachste Formellösung
02.10.2019 01:07:27
Luc:-?
Im Prinzip muss ja nur der DSatz nachkorrigiert und ausgewertet wdn, Peter,
um die Aufteilung in Spalten zu erreichen. Das könnte man mit diversen UDFs machen oder eine uralte XLM-Fkt benutzen, deren Anwendung ab Xl12/2007 neben Anlegen einer benannten Fml (definierter Name) allerdings auch die Speicherung als .xlsm/b erfordert. Definierter Name nebst seiner Fml könnten dann so aussehen:
korrDSatz =AUSWERTEN("{"""&WECHSELN(WECHSELN(","&$A1&",";",";""".";MAX(1;2*SPALTE(A1)-2));",";".""";2*SPALTE(A1)-1)&"""}")
Im Blatt muss dann als Fml nur noch =INDEX(korrDSatz;2) in die bei Anlegen des Namens ausgewählte Zelle eingetragen wdn. Diese Fml kann dann über die Zellen der 6 Spalten gezogen wdn und ergibt den jeweils richtigen Wert.
Morhn, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Deshalb Intelligenz steigern mit …

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige