Cette fonction va générer un tableau de 30 valeurs numérotées (en commençant par 7) :
SEQUENCE(1;30;7)
Ensuite la fonction MAP va parcourir chacune de ces valeurs et exécuter la fonction LAMBDA (où la variable i vaudra ce numéro)
=MAP(SEQUENCE(1;30;7);LAMBDA(i;
Petite parenthèse : si tu as des bases en Apps Script / JavaScript (ou un autre langage), c'est un peu comme exécuter une boucle for :
for (let i = 7; i <= 37; i++)
Donc cette valeur i va permettre de spécifier la colonne dans la requête de la fonction QUERY :
QUERY({export!2:6400};"SELECT Col1, COUNT(Col"&i&") WHERE Col"&i&" > 0 GROUP BY Col1";0)
Et pour éviter de recalculer cette formule plein de fois inutilement, je l'ai enregistrée à l'aide de LET et nommé le tableau avec les résultats tab :
LET(tab;QUERY({
Ensuite, une nouvelle fonction MAP va parcourir les différents noms (uniques et triés) :
MAP(SORT(UNIQUE(export!A2:A));LAMBDA(nom;
Note qu'il aurait été plus optimal de mettre un LET au début de la formule pour éviter de retrier/filtrer cette plage de nombreuses fois (comme c'est le cas dans la seconde version de la formule que j'avais posté).
Et pour terminer, tu as un simple RECHERCHEV qui va rechercher le nom dans tab (qui est un tableau sur 2 colonnes avec les résultats de la fonction QUERY) :
RECHERCHEV(nom;tab;2;0)
Entouré d'un SIERREUR pour éviter l'erreur de RECHERCHEV lorsqu'il n'y a pas de résultat :
SIERREUR(RECHERCHEV(nom;tab;2;0);"")