Meilleure façon de supprimer plusieurs zéros de gauche dans les valeurs non numériques dans Excel

1

Je lisais à propos de "Meilleur moyen de supprimer les zéros non significatifs d'une valeur non numérique dans Excel" et j'adore la solution proposée, mais le problème est que son retrait de 1 seul des zéros précédents est nul. J'en ai besoin pour trouver les zéros et les supprimer tous. J'ai donc utilisé cette formule et inséré une autre instruction if comme ceci:

=IF( LEFT(S3) = "0", RIGHT(S3, LEN(S3)-1),IF(
    LEFT(S3) = "0",
    RIGHT(S3, LEN(S3)),
    S3))

Mais ça n'a pas marché.

user2089542
la source
Qu'est-ce qui viendra après le 0, que des chiffres ou du texte également?
Scott Craner
Vous devez définir la longueur maximale de chaque chaîne de texte et la longueur maximale du nombre sans zéros. Je vois des solutions créatives, mais elles sont toutes hypothétiques en dehors de votre problème théorique.
ejbytes

Réponses:

0

Vous n'avez pas mentionné le nombre maximal de «0» attendu dans votre valeur alphanumérique. Voici donc un exemple avec un maximum de 4 zéros:

=IF(LEFT(A1,4)="0000",RIGHT(A1,LEN(A1)-4), IF(LEFT(A1,3)="000",RIGHT(A1,LEN(A1)-3), IF(LEFT(A1,2)="00",RIGHT(A1,LEN(A1)-2), IF(LEFT(A1,1)="0",RIGHT(A1,LEN(A1)-1), A1))))

Cela vous donnera le prochain résultat:

delete zeroes

Bien sûr si votre valeur est numérique un seul:

=VALUE(A1)

suffira.

fernando.reyes
la source
Merci beaucoup fernando pour votre aide. Cela a très bien fonctionné. Merci pour votre aide.
user2089542
0

Utilisez cette formule matricielle:

=MID(A1,MIN(IF(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)<>"0",ROW(INDIRECT("1:" & LEN(A1))))),LEN(A1))

S'agissant d'une formule matricielle, elle doit être confirmée avec Ctrl-Maj-Entrée au lieu de Entrée lorsque vous quittez le mode édition. Si cela est fait correctement, Excel mettra {} autour de la formule.

Il trouvera le premier non 0 et définissez-le comme premier caractère de la fonction MID.

enter image description here

Scott Craner
la source
0

Essayez cette petite fonction définie par l'utilisateur:

Public Function nozero(s As String) As String
    Dim l As Long
    l = Len(s)

    If Left(s, 1) <> "0" Then
        nozero = s
        Exit Function
    End If

    t = s
    While Left(t, 1) = "0"
        t = Mid(t, 2)
    Wend
    nozero = t
End Function
Gary's Student
la source
Et si vous ajoutez Option Explicit En haut de votre module, vous pouvez l’utiliser comme formule locale.
ejbytes
@ejbytes Vous avez raison
Gary's Student
0

Définir un nom qui crée un tableau de nombres 1:255

seq   refers to:  =ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))

Ensuite, utilisez cette formule entrée en maintenant enfoncée ctrl + shift en frappant Entrer

=MID(A1,MATCH(TRUE,MID(A1,seq,1)<>"0",0),99)

enter image description here

Ron Rosenfeld
la source