(MS Excel)如何在sumifs函数中使用引号括起来自动递增条件的行?

这是function或方法:

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

这是我想要拖下来的公式:

=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

拖下来之后,我的目标是看起来像这样(看粗体字母):

 =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) 

现在的问题是,如果标准使用诸如> =,<=,>,<,<>或=等运算符,则要求是将引号括起来。 问题是,如果拖动公式,引号内的任何内容都不会自动递增。 这是一个问题,因为我需要它自动增量。

您可以连接单元格引用与运算符,而不是将所有引号括起来。 所以你的公式可能看起来像:

 =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) 

这就是为什么我总是避免使用SUMIFS

SUMPRODUCT可以用来做你想做的事情。

而不是这样做:

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

做这个:

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

所以在你的情况下,应该是:

 = 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) 

由于A2和B2不再位于引号内,所以在拖动公式时,它们将自动递增。

仅供参考,以解释这里发生了什么:圆括号内的expression式创build了一个TRUEFALSE的数组。 最后+0将这个TRUEFALSE的数组转换为10的数组。 然后SUMPRODUCT将每个数组中的每个第n个元素放在一起,然后将所有这些单独的产品相加,只有将符合某种条件(或在这种情况下,有几个条件)的元素相加。