3 votes

Raccourcir la formule "IF" d'Excel ?

Cette formule fonctionne, mais elle est énorme :

=IF(X3=B2,K2,IF(X3=B3,K3,IF(X3=B4,K4,IF(X3=B5,K5,IF(X3=B6,K6,IF(X3=B7,K7,IF(X3=B8,K8,IF(X3=B9,K9,IF(X3=B10,K10,IF(X3=B11,K11,IF(X3=B12,K12,IF(X3=B13,K13,IF(X3=B14,K14,IF(X3=B15,K15,IF(X3=B16,K16,IF(X3=B17,K17,IF(X3=B18,K18,IF(X3=B19,K19,IF(X3=B20,K20,IF(X3=B21,K21))))))))))))))))))))

Voici ce qu'il fait :

If X3 is the same as B2, show the contents of cell K2.
If X3 is the same as B3, show the contents of cell K3.
If X3 is the same as B4, show the contents of cell K4.
...etc etc etc all the way to...
If X3 is the same as B21, show the contents of cell K21.

Étant donné que B2:B21 est simplement une colonne de cellules et que K2:K21 est également simplement une colonne de cellules, existe-t-il un moyen de raccourcir la formule ci-dessus, afin qu'elle ne soit pas énorme ?

Je ne sais pas comment transformer ça en 2 gammes de cellules B et K.

Essayer quelque chose comme ça ne marche pas : =IF(X3=B2:B21,K2:K21)

Parce que dire à Excel d'utiliser : lui dit d'additionner tout ce qui va de B2 à B21 et de K2 à K21. Je me suis demandé s'il n'y avait pas un autre séparateur (pas un séparateur de type : ) qui indique à Excel de traiter chaque cellule individuellement plutôt que de les additionner ?

Ça ne marche pas : =IF(X3=B2-B21,K2-K21)

Cela se traduit par : #VALUE!

Le problème est que le numéro de la cellule B, quel qu'il soit, doit également correspondre au numéro correspondant (horizontalement) dans la cellule K.

Merci d'avance à toute personne qui pourrait connaître la réponse, qui, j'en suis sûr, est très simple si la fonctionnalité existe dans Excel.

6voto

FlexYourData Points 5655

En fonction de votre version d'Excel, vous pouvez utiliser XLOOKUP , VLOOKUP o INDEX/MATCH

enter image description here

=XLOOKUP($X$3,$B$2:$B$22,$K$2:$K$22,"")
=VLOOKUP($X$3,$B$2:$K$22,10,FALSE)
=INDEX($K$2:$K$22,MATCH($X$3,$B$2:$B$22))

2voto

Hannu Points 7619

=VLOOKUP(X3;B2:K21;columns(B2:K2))

  • Recherchez la valeur de X3 dans B2:B21, (première colonne de la plage).
  • lorsqu'elle est trouvée, elle choisit et affiche la valeur B2:K2-colonnes à droite de celle-ci.

... et Oui VLOOKUP prend un argument supplémentaire, qui est normalement révélé lorsque vous tapez le nom de la fonction, ou même lorsque vous appuyez sur F1 (Aide).
La valeur par défaut de cet argument est True Il n'est donc pas nécessaire de l'écrire dans ce cas, mais si vous avez besoin d'une correspondance exacte dans le premier argument, il est nécessaire de dire 'Faux' ici à la place.

Añadir IFERROR(...;"Not found") autour d'elle pour afficher votre indication de "rien trouvé".

--- fichier : exemple.csv --- M4 utilisé à la place de X3 ci-dessus

,,,,,,,,,,,,
,1,,,,,,,,,A,,
,2,,,,,,,,,B,,"=VLOOKUP(M4;B2:K21;10;False)"
,3,,,,,,,,,C,,5
,4,,,,,,,,,D,,
,5,,,,,,,,,E,,
,6,,,,,,,,,F,,
,7,,,,,,,,,G,,
,8,,,,,,,,,H,,
,9,,,,,,,,,I,,
,10,,,,,,,,,J,,
,11,,,,,,,,,K,,
,12,,,,,,,,,L,,
,13,,,,,,,,,M,,
,14,,,,,,,,,N,,
,15,,,,,,,,,O,,
,16,,,,,,,,,P,,
,17,,,,,,,,,Q,,
,18,,,,,,,,,R,,
,19,,,,,,,,,S,,
,20,,,,,,,,,T,,
,21,,,,,,,,,U,,

1voto

Ilmari Karonen Points 1609

Au minimum, nous pouvons nous débarrasser des parenthèses supplémentaires en utilisant IFS :

=IFS(X3=B2,K2,X3=B3,K3,X3=B4,K4,X3=B5,K5,X3=B6,K6,X3=B7,K7,X3=B8,K8,X3=B9,K9,X3=B10,K10,X3=B11,K11,X3=B12,K12,X3=B13,K13,X3=B14,K14,X3=B15,K15,X3=B16,K16,X3=B17,K17,X3=B18,K18,X3=B19,K19,X3=B20,K20,X3=B21,K21)

Il s'agit d'une simplification générale qui fonctionne chaque fois que vous avez imbriqué des IF fonctionne comme ça, même si les différentes conditions et résultats n'ont rien en commun.

Cependant, dans votre cas, il y a est un modèle simple pour les conditions, et nous pouvons simplifier davantage votre expression, par exemple en utilisant XLOOKUP :

=XLOOKUP(X3, B2:B21, K2:K21)

Notez que XLOOKUP est une nouvelle fonctionnalité d'Excel 2021, et peut ne pas fonctionner dans les anciennes versions d'Excel. Pour ces versions, vous pouvez obtenir le même résultat en utilisant INDEX y MATCH comme dans :

=INDEX(K2:K21, MATCH(X3, B2:B21, 0))

ou en utilisant VLOOKUP :

=VLOOKUP(X3, B2:K21, COLUMNS(B2:K2), FALSE)

Lorsqu'il est soutenu, cependant, XLOOKUP est probablement la solution la plus pratique dans ce cas, et elle prend également en charge plusieurs paramètres supplémentaires qui vous permettent de spécifier comment la recherche est effectuée et ce qu'il faut faire si aucune correspondance exacte n'est trouvée.

(Notez également que le INDEX / MATCH y VLOOKUP Les solutions devront être adaptées, ou ne fonctionneront peut-être pas du tout, si vous souhaitez, par exemple, effectuer une recherche le long d'une ligne au lieu d'une colonne ou renvoyer une valeur d'une colonne située à gauche de la colonne de recherche. XLOOKUP devrait juste travailler dans tous les cas, ce qui, selon l'OMI, est une bonne raison de le préférer lorsque cela est possible).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X