Excel中的SUMIFS与单元格引用

时间:2016-04-01 14:24:08

标签: excel excel-formula

我试图对表格GLTB列D中的值求和,其中A列中的值以2.21开头,而E列中的值等于单元格A1中的日期。我试过这个公式:

=SUMIFS(GLTB!$D$3:$D$26522,GLTB!$A$3:$A$26522,"2.21*",GLTB!$E$3:$E$26522,GLTB!$A$1)*-1

问题:

  1. A1中的日期并没有出现在GLTB表的其他任何地方,所以我应该得到0来得到一笔钱,但我不知道。我得到一些与我能找到的任何东西都不对应的数字。

  2. 我可以在D列中创建所有值,其中A列以2.21开头等于0(或任何其他数字),并且它对公式的结果没有影响。

  3. 我根据其他问题的答案尝试了这个公式:

    =SUMIFS(GLTB!$D$3:$D$26522,GLTB!$A$3:$A$26522,"2.21*",GLTB!$E$3:$E$26522,GLTB!"="&$A$1)*-1
    
  4. 这只会更改最后一个标准参考。但是,Excel给出了公式错误响应。

    有什么想法吗?

4 个答案:

答案 0 :(得分:0)

这可以让你更近一点:

=SUMIFS(GLTB!$D$3:$D$26522,GLTB!$A$3:$A$26522,">=2/21/16",GLTB!$E$3:$E$26522,GLTB!$A$1)*-1

这假设A列包含日期值格式化为字符串。如果这些值不是日期值,那么请举例说明A列中的单元格内容。

注意:我不清楚你为什么要搜索“2.21 *”所以我使用了>=运算符。这可以更改,或者我们可以根据您的需要为SumIfs添加其他条件。

其他需要注意的事项:

确保列E和单元格A1都包含相同的类型数据( date 格式化为字符串,表示日期的字符串数据。如果您的数据类型不一致,Criteria2GLTB!$E$3:$E$26522,GLTB!$A$1)中的等效性测试将无法返回所需的结果。

答案 1 :(得分:0)

首先,您应该将数据格式化为表格。为此,请使用“开始>格式为表格”。这也可以让您选择为表格命名,例如:数据。基本上这使得执行以下步骤变得更容易。

从那时起,您不再需要GLTB!$A3:$A26522引用,但可以使用data[ColumnA]

我假设你有一个ValueA列,里面有可能以2.21开头的东西,然后你想要求和的ValueD和应该等于某个日期的DateE。

您正在寻找的公式不是SUMIF,而是更好的SUMPRODUCT,因为这可以让您检查多个条件。

最终公式如下:

=SUMPRODUCT((data[DateE]=A1)*(LEFT(data[ValueA],4)="2.21")*data[ValueD])

现在这是做什么的。 SUMPRODUCT首先构建一个产品然后总结。我们假设以下值:

A1 = 2016-03-01

DateE = 2016-03-01 ValueA = 2.213454 ValueD = 3

然后公式将执行以下操作:

(2016-03-01=2016-03-01) is 1 ("2.21" = "2.21) is 1 3 is 3

1*1*3 = 3

现在,如果您更改A1中的日期,则SUMPRODUCT单元格的值应相应更改。

答案 2 :(得分:0)

作为首发,我建议使用表格 - 阅读和维护数据要容易得多:Insert-->Table

e.g。

这里我有“Table1”,Date列格式化为Short Date。

Name Date Quantity
Alpha 17-Mar-16 1
Beta 15-Feb-16 2
Charlie 11-Mar-16 3
Dog 11-Feb-16 4
Echo 9-Feb-16 4
Foo 6-Jan-16 5

然后在单独的行/单元格中,您可以输入一个公式来汇总数据从2月1日开始的数量列。

在这里,我使用了不同的日期格式,但Excel可以使用它。

2月起总计:14 =SUMIFS(Table1[Quantity],Table1[Date],">=01-Feb-16")

仅限二月总计:10 =SUMIFS(Table1[Quantity],Table1[Date],">=01-Feb-16", Table1[Date],"<29-Feb-16")

答案 3 :(得分:0)

尝试这样的事情:

=SUMPRODUCT((INT(GLTB!$E$3:$E$26522)=INT(GLTB!$A$1))*(ROUNDDOWN(GLTB!$A$3:$A$26522,2)=2.21)*(GLTB!$D$3:$D$26522))

如果这是返回和错误,那么两件事之一:

  1. 您的日期不是真实日期,而是看起来像日期的文字。

  2. 您的单元格中的某些列中存在错误。

相关问题