1
votes

Extraire les initiales du champ de nom en ajoutant des points après chaque initiale

Comme le titre l'indique, étant donné une colonne d'un nombre arbitraire de mots de longueur arbitraire, vous voulez un seul ArrayFormula pour obtenir les premières lettres de tous les mots de ladite colonne.

J'ai essayé deux méthodes, vues dans l'exemple de feuille.

  1. L'utilisation de SPLIT et ARRAYFORMULA peut obtenir une cellule mais ne peut pas s'étendre dans la colonne.
  2. En utilisant 2 REGEXEXTRACT , peut obtenir les 2 premières initiales et s'étendre vers le bas

Mais est-il possible d'obtenir un nombre arbitraire de mots pour toute la colonne en utilisant ArrayFormula ?

Est-il possible d'utiliser REGEXEXTRACT pour renvoyer les premières lettres de nombreux mots?

Je voudrais également placer un "." après les initiales. Exemple pour transformer Ed Williams en E. W.?


0 commentaires

3 Réponses :


1
votes
=ARRAYFORMULA(TRANSPOSE(QUERY(TRANSPOSE(IF(LEN(A1:A), 
 IFERROR(REGEXEXTRACT(SPLIT(A1:A, " "), "."))&".", )),,999^99)))

1 commentaires

Merci pour les commentaires!



1
votes

En plus de la solution de player0, cela peut également fonctionner

=ArrayFormula(iferror(if(len(A:A), regexreplace(substitute(A:A&".", " ", ". "), "[^A-Z.\s]",),)))

 entrez la description de l'image ici


1 commentaires

Merci pour les commentaires!



0
votes
=ARRAYFORMULA(UPPER(REGEXREPLACE(A1:A6,"(\w)\S*\s*","$1. ")))

Capture the first letter(\w) followed by non Space characters and space characters    
Replace  everything with just the capture group \w($1) and period . .       
Convert it to UPPER case, if needed.

0 commentaires