2017-07-30 3 views
0

Je veux pouvoir couper et coller la formule suivante dans ma table Excel et la mettre à jour (pas de colonne). Donc E6:AZ6 deviendrait E7:AZ7 sur la rangée ci-dessous, le reste resterait le même.Augmenter la ligne avec la formule indirecte en utilisant les plages

=SUMPRODUCT(COUNTIFS(INDIRECT(FirstYears&"!$E6:$AZ6"),"X",INDIRECT(FirstYears&"!$E$1:$AZ$1"),Weeks)) 

Je ne savais pas (jusqu'à ce que beaucoup de recherche) que cela ne se produisait pas automatiquement indirecte functions. Doh!

J'ai trouvé beaucoup de solutions possibles et je pense que la fonction de rangée pourrait aider mais comme je ne sais pas ce que je fais et aucune de ces solutions ont été avec une gamme plutôt qu'une seule cellule que j'ai été incapable de déterminer où mettre la commande de ligne, comment diviser la formule actuelle et ce que je dois faire à propos de toute cette ponctuation folle ...!

Toute aide serait grandement appréciée!

+0

Les plages nommées «FirstYears» et «Weeks» sont-elles nommées? Est-ce que votre problème obtient simplement le 'INDIRECT (FirstYears &"! $ E6: $ AZ6) 'pour" se comporter "comme vous le souhaitez Avez-vous essayé d'utiliser la fonction' ROW() 'en conjonction avec le' OFFSET() ' – DMM

+0

Merci pour la réponse J'ai le même problème sans les plages nommées Où placeriez-vous la fonction de ligne dans la formule? Cela peut être tout ce dont j'ai besoin, je ne peux pas trouver comment l'écrire dedans au travail –

Répondre

0

Essayez ...

=SUMPRODUCT(COUNTIFS(INDIRECT(FirstYears&"!$E"&ROW($E6)&":$AZ"&ROW($E6)),"X",INDIRECT(FirstYears&"!$E$1:$AZ$1"),Weeks)) 

Hope this helps!

+0

OUI! Merci beaucoup Domenic! Cela a fonctionné et a fait exactement ce dont j'avais besoin! Merci! Je peux maintenant aussi regarder comment vous l'avez fait afin de mieux comprendre comment combiner les fonctions dans le futur . –

0

Je suppose que FirstYears contient le nom (sous forme de texte) d'une feuille de calcul et que vous souhaitez analyser les lignes individuelles de cette feuille de calcul, avec les résultats contenus dans une deuxième feuille de calcul.

Une alternative à l'utilisation de l'extrait INDIRECT(FirstYears&!"$E6:$AZ6") dans une formule dans la seconde feuille est

OFFSET(INDIRECT(FirstYears&"!E6:AZ6"),ROW(cell)-n,0)

cell est l'adresse relative de la première cellule de résultats dans la deuxième feuille et n est une constante égal à la vallée de ROW(cell).

Donc, si la première cellule de résultats est la cellule A2 l'extrait de formule à utiliser dans la cellule A2 est

OFFSET(INDIRECT(FirstYears&"!E6:AZ6"),ROW(A2)-2,0)

Quand une formule contenant cet extrait est copié dans la colonne des résultats, il fournira des références à E6:AZ6, E7:AZ7, EZ:AZ8, etc de la feuille de calcul cible dans les cellules de résultats successifs (par exemple A2, A3, A4, etc) comme vous le souhaitez.

Comment ça marche?

OFFSET(r,i,j)OFFSET(r,i,j) fournit une plage qui a la même forme que la plage r mais qui est décalée dans la feuille de calcul par i lignes (si i est positif, augmente si i est négatif) et j colonnes (à droite si j est positif et à gauche si j est négatif). 0 est une valeur valide pour i et j.

Dans la formule suggérée, r est toujours défini sur la plage E6:AZ6 dans la feuille de calcul cible à l'aide de la fonction INDIRECT, je prends successivement des valeurs de 0,1,2, ... dans la colonne des résultats, et j est toujours mis à zéro. Je prends des valeurs de 0,1,2, etc parce que l'extrait ROW(A2)-2 dans la cellule A2 devient ROW(A3)-2, ROW(A4)-2, etc. lorsqu'il est copié dans la colonne des résultats.

Remarque, à la différence des fonctions telles que SUM(), il n'y a pas de problème avec l'aide d'un extrait de code tel ROW(A2) dans la cellule A2 - il ne donne pas d'avertissement circulaire de référence et un résultat de zéro, au lieu, il donne la valeur correcte de 2.