Pour revenir sur la solution proposée (et me souvenir aussi de la démarche), voici une explication :
Après pas mal d'essais avec query, arrayformula, join, textjoin ... qui n'admettent pas de définir une matrice 2D, je me suis tourné vers la multiplication matricielle qui permet de passer d'une matrice 2D à une matrice 1D (colonne).
Donc, en partant de cette plage définie comme data
0.5653 | 0.05 | 0.1732 | 0.1221 | 0.3817 | 0.03 |
0.312 | 0.5653 | 0.232 | 0.1555 | 0.232 | 0.2981 |
0.03 | 0.5477 | 0.25 | 0.3408 | 0.1221 | 0.5 |
0.5653 | 0.35 | 0.133 | 0.232 | 0.4455 | 0.2935 |
j'ai transformé les valeurs en leur appliquant le critère d'égalité avec la valeur max
=arrayformula(N(data=max(data)))
matrice résultat de la condition et non transposée
on peut alors sommer les colonnes par la multiplication
- de cette matrice transposée de 4 lignes x 6 colonnes
- avec une matrice de 4 lignes x 1 colonne composée de 1 et obtenue par sequence
sequence(rows(data);1;1;0)
d'où :
=arrayformula(mmult(transpose((N(data=max(data))));sequence(rows(data);1;1;0)))
1 | 0 | 0 | 1 | | 1 | | 2 |
0 | 1 | 0 | 0 | | 1 | | 1 |
0 | 0 | 0 | 0 | x | 1 | = | 0 |
0 | 0 | 0 | 0 | | 1 | | 0 |
0 | 0 | 0 | 0 | | | | 0 |
0 | 0 | 0 | 0 | | | | 0 |
Il suffit alors de filtrer les en-têtes de colonnes (transposées) par les valeurs >0 de ce résultat