Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Leerzeichen nach Text und Zahlen
#1
Hallo Experten!

Wie kann man ein Leerzeichen nach einen Text oder Zahl automatisch einfügen?
Bsp eingabe:
m100.17k2 = m 100.17 k2
mmmb 1.01k = mmmb 1.01 k
ich2.02 K = ich 2.02 k
ich2.02 = ich 2.02
Ich weiß das als ertes immer Buchstaben kommen, danach Zahlen nach der/den Zahlen ein punkt und dann eine 2 stellige Zahl ob danach noch etwas kommt weiß ich nicht.

Hintergrund ist
Ich lese mit einer Uf Dateien ein, die andere erstellen. Da passiert es öfter mal das einer die Leerzeichen vergisst einzutippen. Somit habe ich das Problem die Datei mit der UF zu öffnen. Die Namen stehen immer in einem TabellenBlatt.
Was ich möchte:
1. Das bei einer eingabe in ein TabellenBlatt sagen wier mal in der Zelle A1.
    Bei der eingabe schon der Name so eingetragen wird auch wenn mann alles zusammen schreibt
2. Beim einlesen von alten Tabellen, mir der Name dann so im Bsp. in einer TextBox dargestell wird

Ist das möglich?
Wenn ja bitte um Tipp`s!
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#2
Michael,

ein erster Wurf.
 ABCDE
1m100.17k25m100100m 100.17 k2
2mmmb 1.01k7mmmb 11mmmb 1.01 k
3ich2.02 K5ich22ich 2.02 K
4ich2.025ich22ich 2.02

ZelleFormel
B1=SUCHEN(".";A1)
C1=LINKS(A1;B1-1)
D1=VERWEIS(9^99;--RECHTS(C1;SPALTE(A1:D1)))
E1=GLÄTTEN(WECHSELN(C1;D1;" "&D1)&ERSETZEN(WECHSELN(A1;C1;"");4;0;" "))
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
Hallo,

in VBA kann die Funktion "like" sicher Buchstaben und Zahlen unterscheiden.


Zitat:for i = 1 to len(Tx)-1
     if mid(Tx, i,1) like "@" and mid(Tx(i+1,i, 1) like "#" then 'Einfügen eines Leerzeichens, z.B. mit cells.characters.insert
next i


Der Code ist nur symbolisch. Eine zusätzliche Prüfung auf "." ist notwendig.

mfg

(für FReitagabend ok, Montags könnte es auch getestet werden)
Antworten Top
#4
Hallo!
Danke euch allen erstmal für das Intresse und die Tipp's
Werde es erstmal gleich testen und melde mich dann wieder.
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#5
Hallo!
Habe ien wenig getestet.
@shift-del
gefällt mir

@Fennek
Leider funktioniert dein Code nicht, bekomme Syntax fehler!

Für das was ich vorhabe wird vieleicht doch ein VBA Code benötigt.
Wie schon beschrieben, lese ich die zelle A1 in die TextBox1 ein. Ich habe ein Beispiel erstellt zum besseren verständniss.
In der TextBox1 steht der Wert aus A1 und in TextBox2 so wie ich ihn gerne nach dem einlesen von A1 in der Textbox habe möchte.
Was ich vorhabe ist dann eine Datei zu suchen und in einer anderen Datei einen wert auslesen.


Wer kann mir einen Tip oder Hilfe geben?


Angehängte Dateien
.xlsm   WörterundZahlen1.xlsm (Größe: 21,46 KB / Downloads: 4)
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#6
Hallo,

teste mal


Code:
Sub Bo2()
Dim Bo As Boolean
For i = 1 To 2
   Tx = Cells(i, "A")
   Ty = ""
   For l = 1 To Len(Tx)
       If Not Bo And Mid(Tx, l, 1) Like "#" Then
           Ty = Ty & " "
           Bo = True
       End If
       
       If Bo And Mid(Tx, l, 1) Like "[A-Za-z]" Then
           Ty = Ty & " "
           Bo = False
       End If
       Ty = Ty & Mid(Tx, l, 1)
   Next l
Cells(i, "F") = WorksheetFunction.Trim(Ty)
Next i
End Sub


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • michel34497
Antworten Top
#7
Hallo,

für die Beispiele der Datei (und sehr ähnlich zu shift-del):


Code:
Sub iFen()
For i = 1 To 3
Tx = Cells(i, "A")
   For p1 = 1 To Len(Tx)
       If Mid(Tx, p1, 1) Like "#" Then Exit For
   Next p1
   For p2 = Len(Tx) To p1 Step -1
       If Mid(Tx, p2, 1) Like "#" Then Exit For
   Next p2
   Cells(i, "G") = WorksheetFunction.Trim(Left(Tx, p1 - 1) & " " & Mid(Tx, p1, p2 - p1 + 1) & " " & Mid(Tx, p2 + 1))
Next i
End Sub


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • michel34497
Antworten Top
#8
Hallo Fennek!

Habe jetzt nochmal getestet und mir ist noch was aufgefallen.
Mit der Formel von shift-del wird alles so in Spalte E dargestellt wie ich es haben möchte.
Mit deinen beiden Codes wird es leider so nicht eingetragen.
Das Problem besteht in der Zeile 3
a 1.01n4 sollte dann so sein a 1.01 n4 (Buchstaben, leerzeichen, Zahlen, leerzeichen, Buchstabe & Zahle zusammen).
Was müsste geändert werden?
Ich benutze eigentlich den 2 Code den du gepostet hast.
Beim ersten Code wird manchmal nachdem schon ein leerzeichen vorhaden ist ein zusätzliches eingefügt.


Angehängte Dateien
.xlsm   WörterundZahlen1.xlsm (Größe: 24,61 KB / Downloads: 1)
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#9
Hallo,

mal mein Versuch mit RegEx

Code:
Sub prcTestRegex()
   Dim re As Object, reMat As Object
   Dim lngC As Long, lngA As Long
   Dim vtr As Variant, vntArray As Variant
  
  
   Set re = CreateObject("vbscript.regexp")
   re.Pattern = "(\w+)(\s*)(\d+\.\d+)(\s*)(\w*)"
   re.Global = True
   For lngA = 1 To Cells(1, 1).End(xlDown).Row
      vtr = Cells(lngA, 1).Value
      Set reMat = re.Execute(vtr)
      ReDim vntArray(0 To reMat(0).submatches.Count - 1)
      For lngC = 0 To UBound(vntArray)
         vntArray(lngC) = reMat(0).submatches(lngC)
         If vntArray(lngC) = " " Then vntArray(lngC) = ""
      Next lngC
      Cells(lngA, 2).Value = Join(vntArray)
   Next lngA
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#10
Hallo Steffan!

Danke für das intresse.

Leider funktioniert dein Code nicht so wie ich das möchte.
Beim test hat er aus Michael100.01 das daraus gemacht Michael10  0.01 und zuviele Leerzeichen eingefügt.
Rauskommen soll aber immer nach der Buchstaben folge (Michael) ein leerzeichen, Zahlen folge (100.01) . Sollte nach der Zahlen folge (100.01) noch ein Buchstabe stehen dann leerzeichen und der rest der folgt zusammen. Mit shift-del Formel geht das genauso wie ich das möchte. In der Spalte E der Tabelle wird es genauso dargestellt wie es sein soll, nur ich hätte das gerne als VBA Code. Deinen Code habe ich auch in das Modul1 mit eingefügt.


Angehängte Dateien
.xlsm   WörterundZahlen1.xlsm (Größe: 26,97 KB / Downloads: 2)
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste