Qu'est-ce qu'une formule pour supprimer les espaces blancs d'une cellule Excel lorsque le découpage ne fonctionne pas?

10

J'ai un tableau de données Excel que j'ai copié à partir d'un tableau html dans Internet Explorer. Une colonne de valeurs de tableau semble avoir un espace à la fin, mais Trimne le supprimera pas. Lorsque je colle spécialement la valeur du résultat de la Trimfonction, il y a toujours un espace à la fin.

Serait-ce une autre sorte de caractère d'espacement qui Trimne supprime pas?

Très irrégulier
la source
1
Si vous le regardez dans le mode où vous pouvez voir quel type de personnage existe, quel type de personnage n'est pas supprimé?
soandos
si vous le faites = LEN (CELL) alors qu'est-ce que cela retourne?
kobaltz
1
Par curiosité, quel est le numéro ASCII du dernier caractère? Utilisez =CODE(RIGHT(A1,1))(en supposant A1que le texte problématique contienne) pour le voir. L'espace est de 32, l'onglet est de 9 et les nouveaux caractères de ligne sont de 10 et 13.
Hand-E-Food
1
@ Hand-E-Food, le résultat de cette fonction est 160
Highly Irregular
@kobaltz, = LEN (CELL) renvoie 9. La valeur de la cellule est (sans les guillemets doubles) "010-0000", mais trim ne semble pas supprimer le dernier caractère. Le copier-coller pour mettre la valeur ici peut bien être modifié pour être un espace par mon navigateur, ou tout autre moyen ...
Highly Irregular

Réponses:

17

Le caractère 160 est un espace insécable , un personnage conçu pour ressembler à un espace tout en faisant partie du mot, forçant les mots adjacents à rester ensemble. Vous pouvez les convertir en espaces normaux, puis utiliser le découpage.

En supposant que le texte est dedans A1, utilisez:

=TRIM(SUBSTITUTE(A1, CHAR(160), " "))
Hand-E-Food
la source
2
+1. Ce lien est une référence utile . Assez souvent CLEAN, TRIMet SUBSTITUTEsont tous nécessaires pour traiter les cordes
brettdj
1

S'il n'a qu'un seul espace et supposons que la colonne est A.

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
la source
Si c'était ce que c'était, alors l'assiette fonctionnerait ...
soandos
Et d'après ce que les commentaires indiquent, cela aurait tout aussi bien fonctionné.
kobaltz
1
Parce que tu as eu de la chance. Il aurait pu y avoir plus d'un personnage là-bas, et vous ne l'auriez jamais su. De plus, l'autre réponse la traite peu importe où dans la cellule elle se produit, ce qui en fait une bien meilleure réponse générale dans tous les cas.
soandos
À moins qu'il ait quelque chose comme ASCII 160 et ASCII 161. Où, si vous connaissez la longueur de chaque chaîne et que vous voyez qu'elle est différente de ce qui est attendu, personnellement, je ne vois pas le problème avec cela. Je suis ouvert pour essayer de comprendre votre point de vue, mais les deux solutions ont leurs limites dans des environnements différents.
kobaltz
D'accord. Je suppose que j'aime davantage l'autre réponse parce qu'il a identifié le problème, puis l'a résolu. Vous avez une solution à quelque chose qui résout des problèmes similaires. Je vois votre point cependant, +1.
soandos
0

Je suggère qu'il serait plus facile de sélectionner la feuille de calcul entière et d'utiliser Remplacer (Ctrl + H) pour remplacer chaque espace non-break (NBSP) par un espace. Cela laisse toujours des espaces à la fin des cellules, mais évitez de supprimer les NBSP au milieu des cellules. Vous avez toujours besoin de Trim mais c'est plus facile que TRIM (SUBSTITUTE (...)).

Je pensais pouvoir entrer dans un NBSP en utilisant Alt + 160 mais cela n'a pas fonctionné pour moi. J'ai dû utiliser Insérer un symbole pour placer un NBSP dans une cellule, le copier et le déposer dans le champ Rechercher.

Avec Insérer un symbole, NBSP est la cellule vide sur la troisième ligne sous 4.

S'il s'agit d'un problème récurrent, vous pouvez utiliser l'enregistreur de macros pour enregistrer le remplacement. Cependant, il pourrait être préférable d'écrire une macro qui utilise FIND pour localiser NBSP n'importe où dans n'importe quelle chaîne et la remplacer par de l'espace ou la supprimer selon sa position dans la chaîne. Cette macro devrait boucler jusqu'à ce que FIND échoue.

Tony Dallimore
la source
Vous pouvez taper NBSP avec Alt + 0160. Les nombres à un à trois chiffres sont ASCII, les nombres à quatre chiffres sont unicode.
Hand-E-Food
J'ai abandonné dès que cela n'a pas fonctionné. Votre commentaire m'a persuadé de réessayer. J'avais oublié que cela ne fonctionnait qu'avec le pavé numérique qui, sur un ordinateur portable, se trouve au milieu du clavier. Je vais essayer de me rappeler la prochaine fois que je devrai saisir un personnage de cette façon. Merci pour l'invite.
Tony Dallimore
0

Essayez la fonction CLEAN (x) - elle vous débarrasse de tout ce qui vous plaît, surtout lorsque vous avez un mélange de 161, 160 etc.

Sarah
la source
non. ne fonctionnait pas avec 160 à coup sûr.
robotik