1 votes

Question sur le CONCATENAT dans Excel

J'ai dans une colonne le nom et le prénom (Dupont Jean) dans le même champ.

J'aimerais créer un identifiant pour chaque nom avec la logique suivante : les deux premières lettres du nom de famille, les deux premières lettres du prénom + un numéro commençant par 001. Idéalement, et ce n'est peut-être pas possible dans Excel, j'aimerais que le numéro s'incrémente automatiquement s'il y en a déjà un dans la colonne.

Quelqu'un a-t-il une suggestion à faire ?

2voto

Artelius Points 25772

Voici une solution potentielle :

=UPPER(CONCATENATE(LEFT(A1,2),MID(A1,SEARCH(" ",A1)+1,2),TEXT(ROW(B1),"000")))

Plus précisément, je suppose que les noms se trouvent dans la colonne A et les identifiants dans la colonne B. UPPER convertit en majuscules. Le reste :

CONCATENATE(LEFT(A1,2),         #first two letters of last name
    MID(A1,SEARCH(" ",A1)+1,2), #first two letters of first name
    TEXT(ROW(B1),"000")         #ID number with leading zeroes
)

Pour trouver le prénom, on prend ce qui vient après le premier espace. Cette méthode n'est pas infaillible car certaines personnes ont des espaces dans leur nom de famille.

Pour générer le numéro d'identification, il suffit de prendre le numéro de la ligne en cours. Ce n'est pas une très bonne solution, mais je ne peux pas vous proposer quelque chose de plus spécifique sans connaître vos besoins.

1voto

lc. Points 50297

La numérotation automatique peut être réalisée en comptant le nombre de fois où l'identifiant existe déjà. Si vous pouvez vous passer de deux colonnes (vous pouvez les cacher si vous ne voulez pas les conserver), voici une solution qui produit le tableau suivant :

      A               B           C        D
 1  Name           ID begin    ID end   ID
 2  John Smith      JOSM       1        JOSM001
 3  John Smash      JOSM       2        JOSM002
 4  Jacob Black     JABL       1        JABL001
  • Formule en B2 : =UPPER(CONCATENATE(LEFT(A2,2),MID(A2,SEARCH(" ",A2)+1,2)))
    Il s'agit des deux premières lettres de chacun des deux premiers mots de la colonne "nom". SEARCH(" ",A2)+1 trouve l'indice du premier caractère après le premier espace dans A2.

  • Formule en C2 : =COUNTIF(B$2:B2,UPPER(CONCATENATE(LEFT(A2,2),MID(A2,SEARCH(" ",A2)+1,2))))
    Cela permet de compter le nombre d'ID (calculé à partir de la formule ci-dessus) qui existent jusqu'à cette ligne incluse. Notez la ligne de départ absolue de la plage dans COUNTIF qui rend cela possible.

  • Formule en D2 : =CONCATENATE(B2,TEXT(C2,"000"))
    Il prend les deux parties de l'identifiant, formate le numéro en trois chiffres et les assemble.

Il suffit ensuite de copier (remplir) les formules.

0voto

Edward Leno Points 3050

Essayez quelque chose comme :

=MID(A1,1,2)&MID(A1,FIND(" ",A1)+1,2)&TEXT(ROW(),"000")

Si A1 = Smith John Alors B1 = SmJo001

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X