0 votes

Référence dynamique à une cellule d'une autre feuille basée sur du texte

J'essaie d'apprendre comment faire référence "dynamiquement" à une cellule d'une autre feuille en fonction d'une condition textuelle.

J'ai le scénario suivant :

Exemple

Il y a deux feuilles étiquetées "A" et "B".

Dans la feuille "B", j'ai un tableau de 12 lignes et 4 colonnes. Chaque ligne porte une étiquette nutritionnelle, telle que "Avoine", suivie de colonnes indiquant les calories, les glucides, etc. correspondants (voir image ci-dessous).

enter image description here

Dans la feuille "A", je fais référence à chaque aliment avec une colonne suivante de quantité comme indiqué ci-dessous. enter image description here


Objectif

A partir de la feuille "A", j'essaie de calculer les calories d'un repas, donc pour chaque ingrédient je veux multiplier sa quantité avec son équivalent en calories pour 100 grammes comme indiqué dans la feuille "B".

Exigence pour la formule : la possibilité de se référer à une cellule d'une autre feuille en fonction d'une condition textuelle de la cellule courante. Par exemple, je veux pouvoir dire que la quantité en cours correspond à "Avoine" car la colonne précédant "Quantité 1" est "Avoine". Donc intuitivement, j'ai 50 grammes d'avoine (feuille A) que je veux multiplier par les calories de l'avoine (extraites de la feuille B pour 100g). J'essaie donc d'exprimer la formule de telle sorte qu'elle prenne automatiquement la cellule qui précède la quantité et traite son texte, ici "Avoine", comme la référence de la cellule de la feuille B.

C'est la première fois que j'essaie de faire du référencement dynamique. Ma tentative (qui n'a pas fonctionné) a consisté jusqu'à présent à utiliser INDIRECT pour faire référence à la cellule correspondante de la feuille B avec le texte "Avoine". J'ai donc essayé :

A::Table 1::E2 * B::Table 1::Oats&"::B2"

Mais cela donne une erreur. Même si cela fonctionnait, ce ne serait toujours pas ce que je voulais vraiment obtenir, car mon intention idéale est de pouvoir accéder à la cellule précédente de B2 de la feuille B sans avoir à spécifier explicitement "Avoine".


Question :

  1. Où est-ce que je me trompe dans la syntaxe de la formule en faisant référence à une autre feuille (B) et en prenant sa cellule correspondant à la 2ème colonne de la ligne "Avoine" ? Devrais-je utiliser les fonctions INDIRECT y ADDRESS ensemble (comme dans ce exemple ) ?

  2. Y a-t-il un moyen de généraliser cela, où nous ne devons même plus spécifier l'aliment, mais simplement sélectionner la quantité et l'aliment serait automatiquement pris comme la cellule qui le précède (par ligne) ?

1voto

Ana Points 71

Vous pourriez utiliser xlookup fonction. Si le tableau contenant les calories est nommé Nutritional_value et avoir la structure que vous avez fournie dans la capture d'écran cette formule fonctionne : xlookup prend la valeur de la colonne Ingridient 1 dans le tableau actuel, cherche la même valeur dans la première colonne (A) dans le tableau Nutritional_value et renvoie la valeur correspondante de la colonne Calories ; puis elle est multipliée avec la valeur dans la colonne Quantité 1 et divisée par 100 (pour obtenir les calories correctes) :

XLOOKUP(Ingridient 1 'Monday - breakfast';Nutritional_value::A;Calories)×Quantity 1 'Monday - breakfast'÷100

Cependant, cette approche n'est pas très évolutive (vous devez faire la même chose pour les autres ingrédients d'un repas) et si vous voulez faire une analyse, c'est une mauvaise conception. À mon avis, le mieux serait d'avoir une ligne par ingrédient (tableau de données) et l'analyse devrait être faite dans un tableau croisé dynamique.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X