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

Frage zur vba-Funktion "TRIM"

Forumthread: Frage zur vba-Funktion "TRIM"

Frage zur vba-Funktion "TRIM"
KLE
Hallo,
...um für den Export einiger Datensätze diese zuvor von unnötigen Leerzeichen am Anfang oder Ende, bzw. doppelten zu befreien, nutze ich die TRIM-Anweisung.
Dazu gehe ich per Schleife vor:
With Sheets("Tabelle1")
For i = 2 to Letzte Zeile
For a = 3 to letzte Spalte
.cells(i,a).value = Trim(.cells(i,a).value)
next a
next i
end with
Das funktioniert gut, aber bei ca. 15.000 Datenzeilen und mehr, dauert es einige Zeit. Daher wollte ich mal fragen, ob es eine "schnellere" Möglichkeit gäbe ?
Dachte an
With Sheets("Tabelle1")
.Range("A2:Z" & letzte Zeile).value = Trim(.Range("A2:Z" & letzte Zeile).value)
end with
Funktioniert nur nicht ;o(....
Wie könnte es funktionieren ?!? Wenn es denn gehen würde ?!?
Gruß und Danke
Kay
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Frage zur vba-Funktion "TRIM"
19.12.2011 09:39:39
Rudi
Hallo,
erst in ein Array einlesen.
  Dim arr, LetzteZeile As Long, letzteSpalte As Long, i As Long, a As Long
With Sheets("Tabelle1")
arr = .Range(.Cells(2, 3), .Cells(LetzteZeile, letzteSpalte))
For i = LBound(arr) To UBound(arr)
For a = LBound(arr, 2) To UBound(arr, 2)
arr(i, a) = Trim(arr(i, a))
Next a
Next i
.Range(.Cells(2, 3), .Cells(LetzteZeile, letzteSpalte)) = arr
End With

Gruß
Rudi
Anzeige
Super danke...
19.12.2011 11:12:45
KLE
...dachte ich mir schon, dass es per Array laufen muss - Schade des es nicht einfach per Range geht ;o)
Aber so geht es (habe es grad ausprobiert) so schnell, dass nach dem Klick - die MSGBOX "Fertig" erschien...
Vielen Dank Rudi !
Gruß
Kay
PS: Ihr seid hier echt die Besten... ;o) Danke an ALLE !
Anzeige
;
Anzeige

Infobox / Tutorial

Effizientes Arbeiten mit der TRIM-Funktion in VBA


Schritt-für-Schritt-Anleitung

  1. Daten in ein Array einlesen
    Um die Effizienz zu steigern, solltest Du zunächst die Daten in ein Array einlesen. Dies geht schneller, als direkt mit dem Range zu arbeiten.

    Dim arr, LetzteZeile As Long, letzteSpalte As Long, i As Long, a As Long
    With Sheets("Tabelle1")
       arr = .Range(.Cells(2, 3), .Cells(LetzteZeile, letzteSpalte))
  2. Leerzeichen entfernen
    Nutze die Trim-Funktion innerhalb einer Schleife, um alle Leerzeichen zu entfernen.

    For i = LBound(arr) To UBound(arr)
       For a = LBound(arr, 2) To UBound(arr, 2)
           arr(i, a) = Trim(arr(i, a))
       Next a
    Next i
  3. Array zurückschreiben
    Schreibe die bearbeiteten Werte zurück in den Range.

    .Range(.Cells(2, 3), .Cells(LetzteZeile, letzteSpalte)) = arr
    End With

Damit hast Du die TRIM-Funktion effizient in VBA integriert.


Häufige Fehler und Lösungen

  • Fehler: "Typen nicht kompatibel"
    Dies kann auftreten, wenn Du versuchst, nicht-textuelle Daten mit der Trim-Funktion zu bearbeiten. Stelle sicher, dass alle Werte in Deinem Range Text sind.

  • Lösung: Verwendung von CStr
    Um sicherzustellen, dass die Werte textuell behandelt werden, kannst Du CStr nutzen:

    arr(i, a) = Trim(CStr(arr(i, a)))

Alternative Methoden

  • WorksheetFunction.Trim
    Anstelle von VBA kannst Du auch die TRIM-Funktion in Excel direkt verwenden. In einer Formel sieht das so aus:

    =TRIM(A2)
  • VBA LTrim und RTrim
    Wenn Du nur die Leerzeichen am Anfang oder Ende entfernen möchtest, kannst Du die Funktionen LTrim oder RTrim nutzen:

    arr(i, a) = LTrim(arr(i, a)) ' für das Entfernen von Leerzeichen am Anfang
    arr(i, a) = RTrim(arr(i, a)) ' für das Entfernen von Leerzeichen am Ende

Praktische Beispiele

Angenommen, Du hast eine Tabelle mit Namen in der Spalte C und möchtest alle Namen von überflüssigen Leerzeichen befreien:

Dim arr, LetzteZeile As Long
LetzteZeile = Sheets("Tabelle1").Cells(Rows.Count, 3).End(xlUp).Row
arr = Sheets("Tabelle1").Range("C2:C" & LetzteZeile).Value

For i = LBound(arr) To UBound(arr)
    arr(i, 1) = Trim(arr(i, 1))
Next i

Sheets("Tabelle1").Range("C2:C" & LetzteZeile).Value = arr

Tipps für Profis

  • Effiziente Schleifen: Achte darauf, dass Du die Schleifen für große Datenmengen optimierst. Nutze LBound und UBound, um die Schleifen so schnell wie möglich zu halten.

  • Verwendung von Arrays: Die Verwendung von Arrays anstelle von direkten Zellreferenzen beschleunigt den Prozess erheblich, insbesondere bei großen Datenmengen.

  • Debugging: Nutze Debug.Print, um Werte während der Schleifen auszugeben. So kannst Du sicherstellen, dass die TRIM-Funktion korrekt arbeitet.


FAQ: Häufige Fragen

1. Wie kann ich die TRIM-Funktion direkt in Excel verwenden?
Du kannst die TRIM-Funktion in Excel nutzen, indem Du eine Formel wie =TRIM(A1) in eine Zelle eingibst.

2. Was ist der Unterschied zwischen LTrim, RTrim und Trim?
LTrim entfernt nur Leerzeichen am Anfang eines Textes, RTrim entfernt nur am Ende, während Trim Leerzeichen an beiden Enden entfernt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige