Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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
Anzeige
Ä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?
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige