Microsoft Excel

Herbers Excel/VBA-Archiv

Buchstaben an variablen Stellen im Text tauschen


Betrifft: Buchstaben an variablen Stellen im Text tauschen von: Piotrek Kraut
Geschrieben am: 01.10.2019 12:01:31

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

  

Betrifft: AW: Buchstaben an variablen Stellen im Text tauschen von: Rudi Maintaire
Geschrieben am: 01.10.2019 12:28:52

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


  

Betrifft: AW: Buchstaben an variablen Stellen im Text tauschen von: Piotrek Kraut
Geschrieben am: 01.10.2019 13:20:05

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


  

Betrifft: Ärgerlich von: Daniel
Geschrieben am: 01.10.2019 13:23:18

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?


  

Betrifft: AW: Buchstaben an variablen Stellen im Text tauschen von: Daniel
Geschrieben am: 01.10.2019 12:58:00

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


  

Betrifft: ansonsten, warum nicht so wie ich dir von: Daniel
Geschrieben am: 01.10.2019 13:02:20

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


  

Betrifft: nur mit Formeln... von: UweD
Geschrieben am: 01.10.2019 13:05:23

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)  
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit




LG UweD


  

Betrifft: Einfachste Formellösung von: Luc:-?
Geschrieben am: 02.10.2019 01:07:27

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 …



Beiträge aus dem Excel-Forum zum Thema "Buchstaben an variablen Stellen im Text tauschen"