2017-08-31 5 views
2

Ceci est la fonction ou méthode:(MS Excel) Comment incrémenter automatiquement la ligne d'un critère dans la fonction sumifs si elle est placée entre guillemets?

=SUMIFS(sum_range,criteria_range1,criteria1,...) 

C'est ma formule que je veux faire glisser vers le bas:

=SUMIFS(DTR!AE$2:AE$1048576,DTR!B$2:B$1048576,">='Payroll - Extra'!A2",DTR!B$2:B$1048576,"<='Payroll - Extra'!B2",DTR!A$2:A$1048576,'Payroll - Extra'!C$1)

Après avoir fait glisser vers le bas, mon but est qu'il ressemblerait à ceci (regarder les lettres en gras):

=SUMIFS(DTR!AE$2:AE$1048576,DTR!B$2:B$1048576,">='Payroll - Extra'!**A3**",DTR!B$2:B$1048576,"<='Payroll - Extra'!**B3**",DTR!A$2:A$1048576,'Payroll - Extra'!C$1) 

le problème à résoudre est que si les critères utilise des opérateurs tels que:> =, < =,>, <, <>, ou =, l'exigence est que vous placiez entre guillemets. Le problème est que, si vous faites glisser la formule, tout ce qui entre les guillemets ne sera pas auto-incrémenté. C'est un problème parce que j'en ai besoin pour l'auto-incrémentation.

+1

Vous pouvez placer l'opérateur entre guillemets et concaténer la référence de feuille de travail/cellule. –

+0

Puis-je voir un exemple comment faire cela? Les fonctions ne fonctionnent pas entre guillemets. Est-ce quelque chose comme ceci: "> =" + CONCATENATE (Référence de la cellule) –

+1

Utilisez l'opérateur ': &'. Quelque chose comme '"> = "& 'Paie - Extra'! A2' –

Répondre

2

Vous pouvez concaténer la référence de cellule avec l'opérateur, au lieu de tous les placer entre guillemets. Ainsi, votre formule pourrait ressembler à:

=SUMIFS(DTR!AE$2:AE$1048576,DTR!B$2:B$1048576,">=" & 'Payroll - Extra'!A2,DTR!B$2:B$1048576,"<=" & 'Payroll - Extra'!B2,DTR!A$2:A$1048576,'Payroll - Extra'!C$1) 
+0

Merci m'a sauvé quelques minutes à des heures de recherche d'une solution –

+0

De rien. Si vous pouviez marquer ma réponse en tant que réponse, j'apprécierais. –

+0

@MarcSantos Une autre suggestion: Puisque vous utilisez presque une colonne complète dans vos arguments range, vous pouvez essayer d'utiliser la colonne entière 'AE: AE' tant qu'il n'y a rien dans la première ligne qui pourrait perturber les résultats. –

1

Voilà pourquoi j'évite toujours l'utilisation SUMIFS.

SUMPRODUCT peut être utilisé à la place pour faire ce que vous voulez.

au lieu de le faire:

= SUMIFS(<sum range>,<criteria range 1>,"<criteria 1>", 
        <criteria range 2>,<criteria 2>,...) 

Pour ce faire:

= SUMPRODUCT(<sum range>,(<criteria range 1><criteria 1>)+0, 
         (<criteria range 2>=<criteria 2>)+0,...) 

Donc dans votre cas, il devrait être:

= SUMPRODUCT(DTR!AE$2:AE$1048576, 
      (DTR!B$2:B$1048576>='Payroll - Extra'!A2)+0, 
      (DTR!B$2:B$1048576<='Payroll - Extra'!B2)+0, 
      (DTR!A$2:A$1048576='Payroll - Extra'!C$1)+0) 

Depuis A2 et B2 ne sont plus quotes, ils s'incrémentent automatiquement lorsque vous faites glisser la formule vers le bas. Juste pour expliquer ce qui se passe ici: Les expressions à l'intérieur des parenthèses créent un tableau de TRUE et de FALSE. Le +0 à la fin convertit ce tableau de TRUE et FALSE à un tableau de 1 et de 0. Ensuite, SUMPRODUCT multiplie chaque nième élément de chaque tableau, puis additionne tous ces produits individuels, en additionnant seulement les éléments qui répondent à une certaine condition (ou dans ce cas, plusieurs conditions).

+0

Merci, je vais essayer aussi.Ma feuille de calcul est devenue lente à cause de nombreuses formules qui automatisent complètement la masse salariale en plus de l'apport de temps. Essayer de trouver un moyen plus efficace –

+0

J'ai essayé cette formule, il a fini comme # N/A –

+0

Je viens d'ouvrir un classeur vierge Excel, renommé deux des feuilles à "DTR" et "Paie - Extra" et copié et collé cette formule dans une cellule et il a renvoyé la valeur de "0", donc ça marche pour moi. Soit vous le saisissez incorrectement, soit votre feuille contient trop de données à traiter (vous avez plus d'un million de lignes). – ImaginaryHuman072889