Schnellste Weg, um entfernen "extra" - Räume (mehr als 1) aus einer Vielzahl von Zellen mit VBA für excel
Habe ich schon Rum gesucht und habe nicht gefunden eine großartige Antwort auf die Frage, wie zu entfernen überflüssige Leerzeichen aus einer großen Auswahl von Zellen, die text-strings. Sagen wir mal 5000+ Zellen.
einige Möglichkeiten, die ich versucht habe sind:
For Each c In range
c.Value = Trim(c.Value)
Next c
und
For Each c In range
c = WorksheetFunction.Trim(c)
Next c
und
For Each c In range
c.Value = Replace(c.Value, " ", " ")
Next c
Ideen für Verbesserung der Geschwindigkeit?
vielen Dank im Voraus.
Haben Sie verwenden, um VBA? Erhalten Sie möglicherweise performance-Verbesserungen, indem Sie die auf dem Arbeitsblatt extern verwenden .Net, Python, Perl, etc.
warum spielst du nicht die trim-Funktion direkt auf der Tabelle? sollte wesentlich schneller sein.
warum spielst du nicht die trim-Funktion direkt auf der Tabelle? sollte wesentlich schneller sein.
InformationsquelleAutor walter's human | 2015-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Schleife ist, dich zu töten. Dies wird entfernen Sie das Leerzeichen, in eine ganze Spalte in einen brustschuss:
Passen Sie die Auswahl entsprechend. Wenn Sie entfernen möchten Doppel - Leerzeichen, dann:
EDIT#1:
Diese version ersetzt Doppelzimmer mit Einzel-und dann prüfen, ob es noch immer verdoppelt sich Links!
Können Sie erneut, bis Sie sehen, getan
EDIT#2:
basierend auf Don ' Donoghue's Kommentar dieser version laufen rekursiv, bis alle Doppelzimmer werden in Einzelzimmer:
siehe mein EDIT#1
sehr schön! könnte ich auch mit einer "do while" zu automatisieren?
Ändern MsgBox "bitte führen Sie wieder" zu SpaceKiller3 und es wird ausgeführt, bis es keine gibt.
Es war eine schnelle Lösung, ich würde wahrscheinlich gehen mit eine Do until-r ist nichts für eine endgültige Lösung im Gegensatz zu selbst-referenzierend, Es ist nur persönliche Meinung, aber ich bin kein fan von subs sich zu nennen. Große code BTW Gary ist Student, ich glaube nicht, dass der mit einer ersetzen-Funktion :). Auch auf einer seitlichen Anmerkung, brauchen Sie nicht "Rufen" da, nur die sub-name ausreichen :).
InformationsquelleAutor Gary's Student
Bin ich in der Regel mit Bewerten als Schleifen, wenn es darum geht, auf große Auswahl. Es gibt so viele von dieser Funktion Gebrauch, aber ich will nicht diskutieren Sie hier weiter.
dies sollte der Schnellste, aber das Arbeitsblatt.Bewerten ist ein bisschen schneller als Anwendung.Bewerten
rng = rng.Worksheet.Evaluate("index(trim(" & rng.Address & "),)")
InformationsquelleAutor kulapo
Haben Sie einen Ersatz-Spalte neben?
dieses wirklich funktioniert, wenn Sie benötigen, um entfernen Sie alle Leerzeichen nach und das zusätzliche Leerzeichen dazwischen. auch sehr nützlich. Dank
InformationsquelleAutor Dan Donoghue
Kann, hängt von vielen Dingen, aber in meinem Fall der Schnellste war, um alle Werte auf einmal in der Reihe:
InformationsquelleAutor Slai