2017-09-29 7 views
0

J'essaye d'écrire du code qui nécessite qu'une valeur de cellule soit dans une plage de dates. C'est ce que je l'ai écrit à ce jour (bien que quelques changements de nom pour la simplicité):Countives et plages

=IF(COUNTIFS('[SheetA.xlsx]TabA'!A2:AA2, "submit", '[SheetA.xlsx]TabA'!B2:AB2, '[SheetA.xlsx]TabB'!**A9:A13**) >= 1, '[SheetA.xlsx]TabA'!C2, "") 

Fondamentalement, si une cellule d'une ligne contient le mot « soumettre » et la cellule à droite de celui-ci a une date (dans une plage spécifique de cinq jours), je voudrais que la fonction retourne la troisième cellule de cette rangée.

La plage en gras est une plage de dates.

Cette formule ne fonctionne pas lorsque j'utilise une plage, mais renvoie les valeurs attendues lorsque j'entre une date unique. Que devrais-je changer?

Répondre

0

Quant à COUNTIF() ne pas trouver une date dans une gamme, si la plage est consécutive, vous pouvez vous débrouillez comme ceci:

COUNTIFS(A2:AA2, "submit", B2:AB2,">=" & LowestDate,B2:AB2,"<=" & HighestDate) 

Le problème est que vous comparez une gamme à une gamme , donc toute la gamme doit correspondre à l'ensemble de l'autre gamme. Cela retournera toujours faux car les plages n'ont même pas la même forme. Lorsque vous comparez une plage à une seule valeur, Excel suppose automatiquement que vous voulez true si la valeur unique existe n'importe où dans la plage.

Il semble que votre autre problème est que puisque COUNTIFS() ne retourne pas où il a trouvé "soumettre" et une date, l'instruction IF externe ne peut pas déterminer où se trouve la troisième cellule.

S'il n'y a qu'une seule soumission, vous pouvez utiliser Match("submit",2:2,0)+2 pour trouver la colonne relative de "submit" ajouter 2, puis utiliser ADDRESS() pour générer l'adresse de la troisième cellule basée sur la ligne. Enfin, vous mettez cela à l'intérieur d'un INDIRECT() pour retourner la troisième cellule. Quelque chose comme:

=INDIRECT(ADDRESS(ROW(A2),MATCH("submit",2:2,0)+2,1,1)) 

Notez que cela ne fonctionnera pas pour plusieurs correspondances que vous retournez la première valeur MATCH() trouve.

J'utilise ROW() parce que ADDRESS() peut ne pas remplir la série de lignes très bien lorsque vous faites glisser la formule dans une colonne si vous utilisez un numéro de ligne simple.