J'essaie de créer un ARRAYFORMULA qui peut extraire la première valeur de cellule non vide sur chaque ligne d'une plage de colonnes.
Ma dernière tentative est la suivante:
=TRANSPOSE(QUERY(TRANSPOSE( A2:D6),"select * where Col1 <>'' limit 1",9^99))
Placé dans F2
, cela génère toute la sortie de la plage F2:F6
dans le tableau ci-dessous.
Cependant, il est tout à fait évident que tout ce qu'il fait permet de concaténer toutes les cellules de chaque colonne en utilisant un espace comme délimiteur, de sorte que la sortie ne ressemble pas à mon résultat attendu, indiqué dans H2:H6
:-(
J'ai trouvé plusieurs autres formules, mais toutes présentent le même problème. :-(
┌───────┬───────┬───────┬───────┬───────┬───┬ ────────────────┬───┬──────────┐ │ │ A │ B │ C │ D │ E │ F │ G │ H │ ├───────┼───────┼───────┼───────┼──────── ┼───┼────────────────┼───┼──────────┤ │ 1 │ Entrée │ Entrée │ Entrée │ Entrée │ │ Formule/Sortie │ │ Attendue │ ├───────┼───────┼───────┼───────┼─ ──────┼───┼────────────────┼───┼──────────┤ │ 2 │ Test0 │ │ Test1 │ │ │Test0 Test1 │ │ Test0 │ ├───────┼───────┼───────┼───────┼──────── ┼───┼────────────────┼───┼──────────┤ │ 3 │ │ │ │ │ │ │ │ │ ├───────┼───────┼───────┼───────┼┼───────┼─ ──┼────────────────┼───┼──────────┤ │ 4 │ │ │ │ Test3 │ │ Test3 │ │ Test3 │ ├───────┼───────┼───────┼───────┼───────┼┼ ───┼────────────────┼───┼──────────┤ │ 5 │ │ 5 │ │ │ │ 5 │ │ 5 │ ├───────┼───────┼────────┼───────┼──── ───┼───┼────────────────┼───┼──────────┤ │ 6 │ │ │ 54: 74 = 2│ │ │ 54: 74 = 2 │ │ 54: 74 = 2 │ └───────┴────────┴──────── ┴───────┴───────┴───┴────────────────┴───┴──────── ──┘
Donc, ma question est, comment puis-je faire une matrice de tableau ou une requête que je peux placer dans F2
qui sélectionnera uniquement la première valeur non vide de chaque ligne parmi F2:D6
et afficher le résultat dans F2:F6
?
La formule qui vous donnerait les résultats souhaités serait:
=ArrayFormula(REGEXREPLACE(ARRAYFORMULA(TRANSPOSE(TRIM(SPLIT(CONCATENATE(IF(LEN(B3:H8),B3:H8&"★",)&REPT(" "&"♣︎",COLUMN(B3:H3)=COLUMN(H3))),"♣︎")))),"([^★]+).+","$1"))
Il est un peu alambiqué mais fonctionne bien.
Essayer
=iferror(QUERY(transpose(A2:D2),"Select Col1 where Col1 is not null limit 1",0),"")