Mais pourquoi donc un order + limit me bloque les résultats

Bonjour,

J'essaie d'extraire des N° de tels d'une colonne qui contient jusqu'à 3 N° Par personne + parfois Mail.

Si je fais un :

=MAP(A2:A;LAMBDA(a;transpose(unique(query('BASE'!A2:G;"select G where D like '"&a&"' AND NOT G like '%@%' ")))))

Tout va bien, mais je n'ai pas besoin des 3 N° souvent que du premier et du dernier : le mobile, il faut préciser que le mobile n'est pas toujours en dernière position (les joies des dossiers mal remplis)

Je me suis dis que si je faisais :

=MAP(A2:A;LAMBDA(a;transpose(unique(query('BASE'!A2:G;"select G where D like '"&a&"' AND NOT G like '%@%' ORDER BY G DESC LIMIT 2")))))

j'aurais le 06 en premier et ensuite les 2 Suivants et j'éliminais manuellement l'intermédiaire

Mais cela ne fonctionne pas, et je ne comprend pas pourquoi, il me sort juste le dernier N°...

2 questions donc ?

  • Comprendre pourquoi la formule précédente ne fonctionne pas ?
  • Et existerait-il un moyen, de ne sortir que le N° qui contient 06 ou 07 + le premier des 3 (commençant par 01 02 03 04 05) avec une formule bien tordue que je trouverais jamais seul ?

Merci :)

Salut Seb,

Peux-tu faire un mini tableau qui correspond à ta demande avec des données fictives ?

Par exemple, si tu veux les numéros commençant par 06 ou 07, tu peux te servir de cette méthode :

=query(A2:G;"select B where B starts with '06' or B starts with '07' ";0)


Je l'ai fait et...

Sur le fichier de démo

=MAP(A2:A;LAMBDA(a;transpose(unique(query('BASE'!A2:G;"select G where D like '"&a&"' AND NOT G like '%@%' ORDER BY G DESC LIMIT 2")))))

Fonctionne !!!

Mais pas sur mon fichier réel...

+ J'ai tenté ta formule, mais les résultats sont bizarres


FICHIER DE DEMO

La formule est à adapter, ce n'est pas du clé en main....

=TRANSPOSE(query(A2:G2;"select B where B starts with '06' or B starts with '07'  LIMIT 2 ";0))

Si tu mets ça en H2 et tu tires vers le bas, tu auras les 06 et 07 de la colonne B.

Voilà, c'est une piste et vu que tu aimes bien réfléchir, je te laisse cogiter...

OK ! J'ai réfléchi !

C'est l'adaptation que j'avais déjà placé en H du fichier de démo mais qui donnait pas les bons résultats

=MAP(A2:A12;LAMBDA(a;TRANSPOSE(query(Base!A2:G;"select G where D like '"&a&"' AND NOT G like '%@%' AND G starts with '06' or G starts with '07' LIMIT 2 ";0))))

Donc tu m'a laissé réfléchir et j'ai trouvé l'erreur, voici la bonne :

=MAP(A2:A12;LAMBDA(a;TRANSPOSE(query(Base!A2:G;"select G where D like '"&a&"' AND (G starts with '06' or G starts with '07') LIMIT 2 ";0))))

P.S. : Il vrai que j'aime bien comprendre ce que je n'aime pas bêtement copier vos précieuses réponses sans savoir comment elles fonctionnent, cela me permet ensuite de les adapter selon d'autres besoins et de ne vous demander que quand j'ai bloqué un bon moment dessus.

Alors avec çà, maintenant :

Si y pas de N° commençant par 06/07 puis-je avoir le 01/02/03/04/05 à la place ?

et dans l'idéal : Si y pas de N° commençant par 06/07 puis-je avoir le 01/02/03/04/05 à la place et si il y un 06/07 puis-je avoir le 01/02/03/04/05 dans la colonne suivante ?

Là, très honnêtement, je ne saurais pas trouver si c'est faisable en une seule formule.

Avec un simple SI ?

Si(formule 06 donne rien ; alors formule 01 ; sinon formule 06)

dans la colonne suivante :

SI(si colonne précédente débute 01 ; alors rien ; sinon formule 01)

Je vois le sens que tu me proposes mais là je ne vois pas comment l'appliquer.

Salut Seb,

Tu peux utiliser ça :

=MAP(B2:B12;C2:C12;D2:D12;lambda(n;m;o;SIERREUR(transpose(Query(flatten(query({n;m;o};"Select * Where  Col1 matches '07.*|06.*|05.*|04.*|03.*|02.*|01.*' order by Col1 desc limit 2";0));"")))))

https://docs.google.com/spreadsheets/d/1o08axS6vAb2-9hWz1KMfu_B0IT16aoYrHNs8om6GLJI/edit?usp=sharing

La même chose, en plus court :

=MAP(B2:B12;C2:C12;D2:D12;lambda(n;m;o;SIERREUR(transpose(Query(flatten(query({n;m;o};"Select * Where  not Col1 matches '00.*|09.*|08.*' order by Col1 desc limit 2";0));"")))))


Bon week-end,

Fil.

Rechercher des sujets similaires à "pourquoi order limit bloque resultats"