Ajouter des zéros non significatifs / 0 aux valeurs Excel existantes à une certaine longueur

299

Il y a beaucoup, beaucoup de questions et de réponses de qualité sur SO concernant la façon d'empêcher les zéros non significatifs d'être supprimés lors de l'importation ou de l'exportation depuis Excel. Cependant, j'ai déjà une feuille de calcul qui contient des valeurs qui ont été tronquées en tant que nombres alors qu'en fait, elles auraient dû être traitées comme des chaînes. J'ai besoin de nettoyer les données et de rajouter les zéros de tête.

Il y a un champ qui devrait être composé de quatre caractères avec des zéros de plomb remplissant la chaîne à quatre caractères. Toutefois:

"23" should be "0023", 
"245" should be "0245", and
"3829" should remain "3829"

Question: Existe-t-il une formule Excel pour remplir ces 0 sur ces valeurs afin qu'ils soient tous les quatre caractères?

Remarque: ceci est similaire au vieux problème de code postal où les codes postaux de la région de la Nouvelle-Angleterre perdent leur zéro de tête et vous devez les ajouter à nouveau.

Mark A
la source
La période est-elle censée être là "3829."?
Josh Lee
Non, mais c'est la bonne position pour un "." caractère dans la phrase selon ma fidèle copie de Strunk & White. Supprimé pour plus de clarté.
Mark A
7
J'accepterais cela, sauf que c'était dans un bloc de code, dans lequel j'ai tendance à prendre les choses plus littéralement. (En outre, Excel stocke chaque nombre sous forme de flottant, ce qui aurait pu être une décimale.)
Josh Lee
4
@josh upvote pour l'orthographe correcte "acceptez cela sauf cela".
Michiel van der Blonk

Réponses:

506
=TEXT(A1,"0000")

Cependant, la fonction TEXT est capable de faire d'autres trucs fantaisistes comme le formatage de la date.

GSerg
la source
4
OMG! Parfait! Vous apprenez quelque chose de nouveau chaque jour. J'ai même plusieurs livres Excel à oreilles de chien et je ne les ai jamais rencontrés - j'utiliserai chaque fois que j'aurai mutilé des données de code postal basées sur Excel à l'avenir.
Mark A
1
Cela fonctionne bien avec des nombres décimaux ... mais qu'en est-il de l'hexadécimal? Je ne peux pas trouver un moyen de faire fonctionner les 0 principaux avec ...
Shadow
10
@shadow Le nombre hexadécimal pour Excel est une chaîne, pas un nombre. Donc , traiter comme une chaîne: =RIGHT("0000" + A1, 4).
GSerg
8
@shadow, DEC2HEX prend un argument places. Fonctionne donc =DEC2HEX(HEX2DEC(A1),4)bien pour remplir les nombres hexadécimaux.
Raz Wilson
9
@mcs Ils n'ont pas changé la syntaxe. Il se trouve que votre version d'Excel utilise; comme séparateur de paramètres, ce qu'il prend de vos paramètres de langue Windows.
GSerg
78

La façon la plus efficace (moins gênante) de procéder consiste à utiliser un formatage personnalisé.

  1. Mettez en surbrillance la colonne / le tableau que vous souhaitez styliser.
  2. Cliquez sur ctrl+ 1ou Format -> Formater les cellules.
  3. Dans l'onglet Nombre, choisissez Personnalisé.
  4. Définissez le formatage personnalisé sur 000 #. (zéro zéro zéro #)

Notez que cela ne change pas réellement la valeur de la cellule. Il affiche uniquement les zéros non significatifs dans la feuille de calcul.

Moïse
la source
8
Cela fonctionne très bien s'il n'est pas nécessaire de conserver les zéros en tête après la cellule d'origine, mais ne fonctionnera pas si les chaînes doivent être utilisées ailleurs. Cela ferait afficher les cellules comme 0004, 01032, 0284 mais si vous essayez de combiner les chaînes dans une cellule distincte, cela afficherait, par exemple, 4-1032-284 au lieu du 0004-01032-0284 souhaité
Ashton Sheets
@AshtonSheets oui, comme je l'ai noté dans la réponse, il n'affiche que les zéros en tête, il ne fait rien à la valeur réelle. Cependant, il y a eu des situations où j'ai utilisé cela plutôt =text()que pour sa commodité et son manque de formule.
Moïse
7
Pour référence, cela devrait être le cas 0000, non 000#. Sinon, cela ne fonctionne pas pour 0.
PearsonArtPhoto
2
Pour ceux avec mon problème ci-dessus, la réponse a été de remplacer # (hachage) par 0 (zéro). Le # ne vous donne aucun caractère quand il n'y a pas de valeur mais le 0 vous donne un zéro quand il n'y a pas de valeur! Fait sens et fonctionne très bien: 0,0 $, "M"
Andrew
1
De plus, cela n'a pas fonctionné pour moi en utilisant 000 # mais j'ai travaillé lorsque je viens de spécifier un format personnalisé comme 0000 pour un nombre à quatre chiffres, 00000 pour cinq, 000000 pour six, etc. Évidemment, cela n'est utile que pour les numéros de format plus courts.
Hilary
16

J'ai frappé cette page en essayant de remplir les valeurs hexadécimales quand je me suis rendu compte que cela DEC2HEX()fournit cette fonctionnalité gratuitement .

Il vous suffit d'ajouter un deuxième paramètre. Par exemple, lier pour 12devenir 0C
DEC2HEX(12,2)=> 0C
DEC2HEX(12,4)=> 000C
... et ainsi de suite

MonoThreaded
la source
9

Je ne sais pas si c'est nouveau dans Excel 2013, mais si vous cliquez avec le bouton droit sur la colonne et dites "Spécial", il y a en fait une option prédéfinie pour le code postal et le code postal + 4. Magic.

entrez la description de l'image ici

ProVega
la source
6
Grande suggestion et mise à jour. Besoin de donner à Microsoft un -1 pour encourager quiconque à stocker les SSN dans une feuille de calcul.
Mark A
8

Je sais que cela a été répondu il y a un certain temps, mais le simple fait de sonner avec une solution simple ici, qui me surprend, n'a pas été mentionné.

=RIGHT("0000" & A1, 4)

Chaque fois que j'ai besoin de rembourrage, j'utilise quelque chose comme ci-dessus. Personnellement, je trouve que c'est la solution la plus simple et la plus facile à lire.

zgirod
la source
1

Si vous utilisez une mise en forme personnalisée et devez concaténer ces valeurs ailleurs, vous pouvez les copier et Coller spécial -> Valeurs ailleurs dans la feuille (ou sur une autre feuille), puis concaténer ces valeurs.

JeffK627
la source
1

Même cela fonctionnera bien

REPT(0,2-LEN(F2)&F2

où 2 est le nombre total de chiffres, pour 0 ~ 9 -> il affichera 00 à 09 reste rien ne sera ajouté.

user2902302
la source