Pourquoi ma formule tire-t-elle le résultat CELL NAME et non la valeur de cette cellule?


2

Je crée une feuille de travail qui compare deux ensembles de données extraites à des dates différentes. La colonne dont tout est extrait est créée par une formule matricielle composée de valeurs uniques combinées provenant des deux ensembles de données. Auparavant, cela fonctionnait très bien parce que je mettais manuellement les titres des listes (List1 et List2):

=IFERROR(IFERROR(INDEX(List1,MATCH(0,IF(ISBLANK(List1),1,COUNTIF($B$3:B3,List1)),0)),INDEX(List2,MATCH(0,IF(ISBLANK(List2),1,COUNTIF($B$3:B3,List2)),0))),"")

Maintenant, j'essaie de configurer la feuille de travail pour organiser plusieurs dates avec un menu permettant de sélectionner vos dates. J'ai configuré une table de référence afin que chaque feuille de calcul ait sa propre liste en fonction de la date à laquelle elle a été extraite:

DATES       TAB         LIST
2/4/2015    Requireds A ListA
2/5/2015    Requireds B ListB
2/6/2015    Requireds C ListC
2/7/2015    Requireds D ListD
2/8/2015    Requireds E ListE

J'ai mis à jour ma formule d'origine en remplaçant «List1» par «le premier menu déroulant pour référencer la colonne de liste dans la table de référence» et «List2» pour rechercher la deuxième date à l'aide de Index and Match:

=IFERROR(IFERROR(INDEX(
(INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3))
,MATCH(0,IF(ISBLANK(
(INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3))
),1,COUNTIF($B$3:B3,
(INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3))
)),0)),INDEX(
(INDEX(DropDownTable!A:C,MATCH(Comparison!D1,DropDownTable!A:A,0),3))
,MATCH(0,IF(ISBLANK(
(INDEX(DropDownTable!A:C,MATCH(Comparison!D1,DropDownTable!A:A,0),3))
),1,COUNTIF($B$3:B3,
(INDEX(DropDownTable!A:C,MATCH(Comparison!D1,DropDownTable!A:A,0),3))
)),0))),"")

CEPENDANT, voici mon problème. Lorsque je lance la formule d'évaluation, il semble que si la majorité de mes nouvelles recherches vont afficher le nom de la liste, une ou deux ne le font pas. Il tire la cellule du nom de la liste. Donc au lieu de m'apporter 'ListA', cela m'amène:

DropDownTable!$C$2

Je ne sais pas si c'est la seule erreur dans la formule; Je ne sais pas si le mot «ListA» revient à faire référence à la liste elle-même. C'est peut-être quelque chose que je déconne aussi.

Toute orientation serait excellente, mais je ne comprends pas pourquoi elle ne me dit pas simplement «ListA» comme il se doit.

Réponses:


0

Je ne suis pas sûr de ce que tu veux dire.

Votre tout premier INDEX attend une plage en tant que premier paramètre, et donc le résultat de:

INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3)

doit être tel.

INDEX est une fonction suffisamment flexible pour que le résultat généré puisse être une cellule réelle. valeur ou une cellule référence . C'est une propriété extrêmement utile, comme vous pouvez l'imaginer.

Et c'est là que je ne comprends pas vraiment votre formule. Le résultat de l'expression ci-dessus résultera en une référence de cellule unique, par ex. DropDownTable! $ C $ 8, qui est ensuite transmis comme plage au premier INDEX, qui deviendra quelque chose comme:

INDEX((DropDownTable!$C$8,MATCH(0,...

et quel que soit le résultat de l'expression suivante, vous n'allez toujours pas obtenir grand chose: INDEXER une seule cellule n'a pas beaucoup de sens!

Très difficile de vous aider plus loin. Cela peut en fait être un cas où vous seriez mieux loti ne pas publiez vos formules existantes et donnez simplement un aperçu de ce que vous essayez d’atteindre. Il est souvent beaucoup plus facile de donner des solutions à partir de zéro que de vérifier par erreur les solutions des autres, en particulier si, comme dans votre cas, elles impliquent des constructions aussi longues et difficiles à disséquer que les vôtres.

Cordialement


(Appuyez sur enter pour afficher le commentaire - vous apprenez quelque chose de nouveau chaque jour!) La valeur de la cellule renvoyée est le nom d'une plage, qui correspond à la plage que j'aimerais utiliser. Ce que j'essaie de réaliser: lorsqu'une cellule indique une certaine date, je souhaite que ma formule regarde cette date et utilise la plage nommée correspondante d'un tableau. Mes plages sont appelées ListA à ListE. Je veux que ce premier index utilise l'une des plages nommées comme index. Le plus frustrant est que cela fonctionne comme je l’attends plus tard dans la formule, mais ce n’est pas le cas au début de la formule.
elcoxita

Je vois. Ensuite, la cellule qui contient le nom de cette plage nommée et que vous générez via votre deuxième fonction INDEX doit d'abord être transmise à INDIRECT avant d'être transmise à INDEX supplémentaire. Par exemple: = IFERROR (IFERROR (INDEX (INDIRECT (DropDownTable! A: C, MATCH (comparaison! B1, DropDownTable! A: A, 0), 3)), MATCH (0, ..., etc.
XOR LX

Ajouter INDIRECT fait que l'étape avant INDIRECT soit calculée, retourne 'ListA', mais j'obtiens alors #ref une fois INDIRECT calculé. Je ne connais pas le fonctionnement indirect, mais je vérifie. Je comprends au moins ce que vous dites et je pourrai peut-être trouver une solution si mon résultat du deuxième index doit être un tableau.
elcoxita

L'entrée dans la cellule transmise à INDIRECT doit être PRÉCISEMMENT identique à la plage nommée qu'elle représente supposément. Pas d'espacement supplémentaire, traits d'union, traits de soulignement, etc. dans l'un mais pas dans l'autre.
XOR LX

Ils portent exactement le même nom et je reçois toujours (Indirect ("ListA"), puis quand il calcule cela passe à #REF .. Je l'ai fait fonctionner en utilisant une longue clause IF. J'essaie peut-être de le penser plus compliqué que cela ne devrait être, alors si vous avez d'autres idées, jetez-les moi dessus :)
elcoxita
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.