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.

Trim-Befehl wirft "." und "," durcheinander
#1
Hallo,

ich füge aus einer txt-Datei mehrere Zeilen ein, habe da verschiedene Formate (Text und Zahlen) und auf nachstehende (bzw. voranstehende) Leerzeichen.

Zwingend muss ich die Werte in ein anderes Tabellenblatt kopieren.

um die Leerzeichen zu entfernen verwende ich den Trim-Befehl (VBA. steht voraus weil der zuerst nicht funktioniert hat)

Das Problem an der Sache ist, dass aus der Kommazahl durch den Trimbefehl eine Zahl ohne Komma erzeugt wird -

--> Aus "17,852777" wird "17.852.777"

Gibt es da einen Befehl den ich da leicht einfügen kann, dass der Wert "Deutsch" verwendet wird?

Wäre für eure Hilfe sehr dankbar,

Grüße
 Daniel

Ach ja - eine Datei mit dem Beispiel hab ich angehängt.


Angehängte Dateien
.xlsm   Trimproblem.xlsm (Größe: 15,96 KB / Downloads: 7)
Antworten Top
#2
Hallo,

Trim löscht führende und nachgestellte Leerstellen.

Mit Replace kannst Du alle entfernen.

Hier mal ein Vorschlag, wie Du es umsetzen könntest:

Code:
Sub Glaetten()
'
Dim i As Integer
i = 1

Do While Cells(i, 2) <> ""
  If IsNumeric(Cells(i, 1)) Then
  Cells(i, 1) = CDbl(Replace(Cells(i, 2).Value, " ", ""))
  Else
   Cells(i, 1) = Replace(Cells(i, 2).Value, " ", "")
  End If
  i = i + 1
Loop
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Daniel.Haering
Antworten Top
#3
Hallo Daniel,

teste mal so:

Code:
Cells(i, 1).Value = Application.Trim(Replace(Cells(i, 1).Text, ",", "."))

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Daniel.Haering
Antworten Top
#4
Hallöchen,

die Zahl ist für Excel durch den Trimbefehl ein Text. Anschließend versucht Excel, beim Eintrag in die Zelle daraus wieder eine Zahl zu machen. Da VBA "englisch" arbeitet, und im englischen das Komma ein Tausendertrennzeichen ist, werden die deutschen Tausendertrenner gesetzt.

Du kannst Excel wahrscheinlich auch ohne Replace austricksen:

Code:
Sub Glaetten()
'
Dim i As Integer
i = 1

Do While Cells(i, 1) <> ""
   If IsNumeric(Cells(i, 1).Value) Then
      Cells(i, 1).Value = Str(Trim(Cells(i, 1)))
   Else
      Cells(i, 1).Value = Trim(Cells(i, 1))
   End If
   i = i + 1
Loop
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Daniel.Haering
Antworten Top
#5
Servus,

vielen Dank für eure Hilfe - meine Lösung schaut jetzt so aus:


Code:
           i = 1
           j = 1
           Do While Cells(i, j) <> ""
               Do While Cells(i, j) <> ""
                   If IsNumeric(Cells(i, j).Value) Then
                       Cells(i, j).Value = VBA.Str(VBA.Trim(Cells(i, j)))
                   Else
                       Cells(i, j) = VBA.Trim(Cells(i, j))
                   End If
                   j = j + 1
               Loop
               j = 1
               i = i + 1
           Loop
Damit gehe ich Zeile für Zeile nach unten bis eine leere Zeile erreicht wird (in Spalte A ist wenn dann immer text) und dann gehe ich so lange nach rechts bis die erste leere Spalte erreicht wird.

Grüße
 Daniel
Antworten Top


Gehe zu:


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