Extraire uniquement des nombres d’un texte (chaîne)

Dans Excel, vous pouvez utiliser des formules pour extraire le nombre d’une valeur avec du texte et des nombres combinés. Dans l’exemple suivant, nous avons utilisé une formule pour obtenir 1984 à partir de la valeur « TPS1984 ».

extraire uniquement des numéros

Formule pour extraire des nombres d’un texte

=TEXTJOIN("",TRUE,IFERROR((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1),""))

Dans ce tutoriel, nous allons comprendre cette formule en détail. Et pour le comprendre, nous devons le diviser en plusieurs parties :

  1. Tout d’abord, nous avons la fonction LEN pour obtenir le nombre de caractères dans la valeur.
    formula-to-extract-numbers-from-a-string
  2. Après cela, INDIRECT utilise une référence de cellule en utilisant le 1 et le 7 (renvoyés par le LEN).
    indirect-uses-a-cell-reference
  3. Ensuite, la fonction ROW utilisera INDIRECT et retournera un tableau de nombres commençant par 1 et se terminant par 7.
    row-function-returns-the-array
  4. Maintenant, MID utilisera ce tableau et en renverra un nouveau avec les valeurs de la cellule à laquelle vous vous êtes référé.
    mid-returns-new-one-with-value
  5. Ensuite, nous avons une simple formule de multiplication pour multiplier le tableau par 1. Avec cette simple multiplication, vous obtenez un nouveau tableau où vous aurez #VALEUR ! L’erreur pour les valeurs de texte et les nombres restera intacte.
    multiply-the-array
  6. À partir de là, la fonction SIERREUR convertira les valeurs d’erreur en valeurs vides.
    iferror-to-convert-errors-into-blank
  7. Et à la fin, TEXTJOIN combinera les valeurs, et vous n’aurez que des nombres dans le résultat.
    extract-numbers-in-older-excel-versions

La formule ci-dessus ne fonctionne que pour la version Excel 2019 et supérieure. C’est parce que nous utilisons TEXTJOIN, indisponible dans les versions antérieures.

Si vous voulez une valeur pour une partie de la formule, sélectionnez cette partie et appuyez sur la touche F9 du raccourci.

TEXTJOIN est une fonction volatile qui change de valeur lorsque vous mettez à jour une cellule de la feuille de calcul. Cela peut rendre votre classeur un peu lent.

Mais que faire si j’utilise une version antérieure (2007, 2010, 2013, 2016)

Si vous utilisez les versions antérieures, vous devez utiliser une formule différente. Une formule comme celle-ci :

=IF(SUM(LEN(A1)-LEN(SUBSTITUTE(A1, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A1, LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("$1:$"&LEN(A1))),1))* ROW(INDIRECT("$1:$"&LEN(A1))),0), ROW(INDIRECT("$1:$"&LEN(A1))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A1)))/10),"")
=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))*ROW(INDIRECT("1:"&LEN(A1))),0),ROW(INDIRECT("1:"&LEN(A1))))+1,1)*10^ROW(INDIRECT("1:"&LEN(A1)))/10)

Les deux formules ci-dessus fonctionnent bien avec les différents types de valeurs. Je l’ai testé de la manière suivante.

formules-avec-des-valeurs-différentes

Dans la cellule A1 ci-dessus, nous avons une valeur complexe composée de texte, de nombres et de symboles et nous n’avons que des nombres dans le résultat.

Obtenir le fichier Excel

Télécharger

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *