Was ist eine Formel, um das Leerzeichen aus einer Excel-Zelle zu entfernen, wenn das Trimmen nicht funktioniert?

10

Ich habe eine Tabelle mit Excel-Daten, die ich aus einer HTML-Tabelle in Internet Explorer kopiert habe. Eine Spalte mit Tabellenwerten scheint am Ende ein Leerzeichen zu haben, Trimwird es jedoch nicht entfernen. Wenn ich den Wert des Ergebnisses der TrimFunktion einfüge, hat es immer noch das Leerzeichen am Ende.

Könnte es sich um eine andere Art von Leerzeichen handeln, Trimdie nicht entfernt werden?

Sehr unregelmäßig
quelle
1
Wenn Sie es in dem Modus betrachten, in dem Sie sehen können, welche Art von Zeichen vorhanden sind, welche Art von Zeichen wird nicht entfernt?
Soandos
Wenn Sie = LEN (CELL) tun, was gibt es dann zurück?
Kobaltz
1
Wie lautet aus Neugier die ASCII-Nummer des letzten Zeichens? Verwenden Sie =CODE(RIGHT(A1,1))(vorausgesetzt, A1der problematische Text enthält Contians), um ihn anzuzeigen. Leerzeichen ist 32, Tab ist 9 und neue Zeilenzeichen sind 10 und 13.
Hand-E-Food
1
@ Hand-E-Food, das Ergebnis dieser Funktion ist 160
Sehr unregelmäßig
@kobaltz, = LEN (CELL) gibt 9 zurück. Der Zellenwert ist (ohne doppelte Anführungszeichen) "010-0000", aber trim scheint das letzte Zeichen nicht zu entfernen. Das Kopieren und Einfügen, um den Wert hier einzufügen, kann von meinem Browser oder auf andere Weise als Leerzeichen geändert werden ...
Sehr unregelmäßig

Antworten:

17

Das Zeichen 160 ist ein nicht unterbrechendes Leerzeichen , ein Zeichen, das so gestaltet ist, dass es wie ein Leerzeichen aussieht, aber dennoch Teil des Wortes ist, wodurch die benachbarten Wörter gezwungen werden, zusammen zu bleiben. Sie können sie in reguläre Leerzeichen konvertieren und dann Trimmen verwenden.

Angenommen, der Text ist in A1, verwenden Sie:

=TRIM(SUBSTITUTE(A1, CHAR(160), " "))
Hand-E-Food
quelle
2
+1. Dieser Link ist eine nützliche Referenz . Nicht selten CLEAN, TRIMund SUBSTITUTEalle , die für den Umgang mit Strings
brettdj
1

Wenn es nur ein Leerzeichen hat und wir annehmen, dass die Spalte A ist.

A1= "CELL A1 "
A2= "CELL A2 "

Then B1 would be =LEFT(A1, LEN(A1)-1)
Then B2 would be =LEFT(A2, LEN(A2)-1)
Kobaltz
quelle
Wenn es das wäre, würde das Trimmen funktionieren ...
soandos
Und nach den Kommentaren hätte dies genauso gut funktioniert.
Kobaltz
1
Weil du Glück hast. Das hätte dort mehr als ein Charakter sein können, und du hättest es nie gewusst. Darüber hinaus befasst sich die andere Antwort damit, egal wo in der Zelle sie auftritt, was sie auf jeden Fall zu einer viel besseren allgemeinen Antwort macht.
Soandos
Es sei denn, es hatte so etwas wie ASCII 160 und ASCII 161. Wenn Sie die Länge jeder Zeichenfolge kennen und feststellen, dass sie von den Erwartungen abweicht, sehe ich das Problem persönlich nicht. Ich bin offen dafür, Ihre Ansicht zu verstehen, aber beide Lösungen haben ihre Grenzen in unterschiedlichen Umgebungen.
Kobaltz
Einverstanden. Ich denke, ich mag die andere Antwort mehr, weil er das Problem identifiziert und es dann gelöst hat. Sie haben eine Lösung für etwas, das ähnliche Probleme löst. Ich verstehe Ihren Standpunkt jedoch, +1.
Soandos
0

Ich schlage vor, es wäre einfacher, das gesamte Arbeitsblatt auszuwählen und Ersetzen (Strg + H) zu verwenden, um jeden nicht unterbrochenen Bereich (NBSP) durch einen Bereich zu ersetzen. Dies lässt immer noch Leerzeichen am Ende der Zellen, vermeidet jedoch das Entfernen von NBSPs aus der Mitte der Zellen. Sie benötigen noch Trimmen, aber das ist einfacher als TRIM (SUBSTITUTE (...)).

Ich dachte, ich könnte mit Alt + 160 einen NBSP eingeben, aber das hat bei mir nicht funktioniert. Ich musste Symbol einfügen verwenden, um ein NBSP in eine Zelle zu platzieren, es von dort zu kopieren und in das Feld Suchen nach zu legen.

Bei Symbol einfügen ist NBSP die leere Zelle in der dritten Zeile unter 4.

Wenn dies ein sich wiederholendes Problem ist, können Sie das Ersetzen mit dem Makrorecorder speichern. Es ist jedoch möglicherweise besser, ein Makro zu schreiben, das FIND verwendet, um NBSP an einer beliebigen Stelle in einer Zeichenfolge zu lokalisieren und es entweder durch Leerzeichen zu ersetzen oder entsprechend seiner Position in der Zeichenfolge zu löschen. Dieses Makro müsste eine Schleife ausführen, bis FIND fehlschlägt.

Tony Dallimore
quelle
Sie können NBSP mit Alt + 0160 eingeben. Ein- bis dreistellige Zahlen sind ASCII, vierstellige Zahlen sind Unicode.
Hand-E-Food
Ich gab auf, sobald es nicht funktionierte. Ihr Kommentar hat mich überzeugt, es erneut zu versuchen. Ich hatte vergessen, dass es nur mit dem Ziffernblock funktionierte, der sich auf einem Laptop in der Mitte der Tastatur befindet. Ich werde versuchen, mich an das nächste Mal zu erinnern, wenn ich auf diese Weise einen Charakter eingeben muss. Danke für die Aufforderung.
Tony Dallimore
0

Probieren Sie die CLEAN (x) -Funktion aus - sie beseitigt all diesen Schwachsinn, besonders wenn Sie eine Mischung aus 161, 160 usw. haben.

Sarah
quelle
nein, tut es nicht. hat mit 160 sicher nicht funktioniert.
Robotik