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.
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")