web-dev-qa-db-fra.com

Dans Google Sheets, pouvez-vous appliquer une expression régulière à une plage générée?

J'ai une liste de codes postaux britanniques, ressemblant à peu près à ceci. Les entrées peuvent ne pas être uniques.

A1 1AA
A1 2BC
A1 3PN
B2 4XY
B2 5LH
C3 6NJ

Ils sont dans une plage nommée Postcodes. J'ai configuré la disposition suivante pour compter le nombre d'instances de chaque zone de code postal (la partie avant l'espace).

   A                 B (range "PostcodeAreas")        C                       D
1  =SORT(Postcodes)  =REGEXREPLACE($A1, "\s\w+", "")  =UNIQUE(PostcodeAreas)  =COUNTIF(PostcodeAreas, $C1)

J'ai étendu les formules dans B1 et D1 vers le bas pour couvrir la sortie de données des formules dans A1 et C1.

Cela fonctionne, et le résultat serait ceci pour mes données d'exemple:

   A       B    C   D
1  A1 1AA  A1   A1  3
2  A1 2BC  B2   B2  2
3  A1 3PN  C3   C3  1
4  B2 4XY
5  B2 5LH
6  C3 6NJ

Les colonnes A et B, en tant que travaux, ne sont pas pertinentes pour le public cible de la feuille. Je les ai donc cachées. Le résultat final est un bel ensemble de comptes dans les colonnes C et D.

Tout va bien. Cependant, je ne peux pas m'empêcher de penser que cela peut être optimisé un peu. En particulier, je n'aime pas la formule étendue manuellement dans B1. Est-il possible d'écrire une seule formule qui applique l'expression régulière à toutes les sorties SORT()? Ce que je pourrais alors peut-être même envelopper dans le UNIQUE(), et éliminer le besoin de colonnes fonctionnantes entièrement? J'ai cherché un peu, mais je n'ai pas trouvé de réponse.

3
Scott

En supposant que vos données soient en A1: A, essayez en B1

=query(ArrayFormula(iferror(regexextract(A1:A, {"^(.+)\s", "\s(.+)$"}))), "select Col1, count(Col2) where Col1 <>'' group by Col1")
3
JPV