【问题标题】:(MS Excel) How do I use sumifs or sumproduct on an array like this that has 3 criteria?(MS Excel)如何在具有 3 个条件的数组上使用 sumifs 或 sumproduct?
【发布时间】:2017-09-01 09:25:04
【问题描述】:

我已经尝试过 sumifs 和 sumproducts 来尝试获得我需要的结果,即如果以下 3 个条件对值求和:A 列 = 规定的开始日期,B 列 = 规定的结束日期,并且列标题 = 人名, 满足。下面是电子表格:

这是一个示例公式:

=SUMIFS('Payroll - Extra'!C2:C1048576,'Payroll - Extra'!A2:A1048576,"='Payroll Tables and Settings'!S3",'Payroll - Extra'!B2:B1048576,"='Payroll Tables and Settings'!T3",'Payroll - Extra'!C1,'Payslip - Extra'!A3)

公式在下图中的#VALUE 单元格中输入:

Sample file

【问题讨论】:

  • 您的sum_range列。你指的是你没有在你的屏幕截图中显示的数据。并且屏幕截图并不容易转移到工作表中。所有这一切都使重现您的问题变得困难。请阅读How to create a Minimal, Complete, and Verifiable example 并编辑您的问题;或上传一个证明问题的工作表(已删除敏感信息)。
  • 在文章底部添加了文件

标签: excel sumifs


【解决方案1】:

您的公式中出现VALUE 错误的原因是您的第三个criteria_range 与sum_range 的大小不同,这是SUMIFS 的要求。

另外,正如我在评论中提到的,您只是对 C 列(约翰)求和。

要使用 SUMIFS,您需要将 sum_range 设为正确的列。一种方法是使用 INDEX 函数。使用 MATCH 确定正确的列,然后输入 0 作为 row 参数,将返回该列的所有行。有关 INDEX 函数,请参阅帮助。

正如我们在上一个问题中提到的,您还应该从引号中删除单元格引用。我将它们设为绝对值,因此它们不会增加,但您可以更改它。

因此,在显示Value 的单元格中重写屏幕截图中的公式的一种方法是:

=SUMIFS(INDEX('Payroll - Extra'!$C$2:$J$1048576,0, MATCH($A3,'Payroll - Extra'!$C$1:$J$1,0)),'Payroll - Extra'!A2:A1048576,'Payroll Tables and Settings'!$S$3,'Payroll - Extra'!B2:B1048576,'Payroll Tables and Settings'!$T$3)

以下应该类似地工作,并且更简单和更短:

=SUMIFS(INDEX('Payroll - Extra'!$C:$J,0, MATCH($A3,'Payroll - Extra'!$C$1:$J$1,0)),'Payroll - Extra'!$A:$A,'Payroll Tables and Settings'!$S$3,'Payroll - Extra'!$B:$B,'Payroll Tables and Settings'!$T$3)

【讨论】:

  • 好的,它可以工作。卡在这个问题上很长时间了,我真的很感谢你这两天的帮助
  • 遗憾地弹出此错误:“Excel 在尝试计算一个或多个公式时用尽资源。因此,无法评估这些公式。”如果我把所有东西都整合在一起
  • 办公室中的大多数计算机都使用32位操作系统,我相信此时excel只能使用2gb的内存。我也担心一旦文件被投入到日常实践中,它会达到数据超出其限制的地步
  • 我已经确认使用第一个公式会导致错误,因为它的计算复杂性。
  • @MarcSantos 我提供的第二个公式是等效的。只需使用它,因为它似乎效果更好。如果做不到这一点,则需要采用不同的方法。你真的有多少行数据?通常不需要整列引用;和 VBA 也可能有优势。如果您的数据确实很大,Excel 甚至可能不是正确的工具。
【解决方案2】:

使用SUMPRODUCT

=SUMPRODUCT(('Payroll - Extra'!$C$2:$V$1048576)*('Payroll - Extra'!$C$1:$V$1=A3)*('Payroll - Extra'!A2:A1048576='Payroll Tables and Settings'!S3)*('Payroll - Extra'!B2:B1048576='Payroll Tables and Settings'!T3))

【讨论】:

  • 没有同样的问题:/
  • 我的猜测是 sumifs 和 sumproduct 不能将列作为条件处理,或者所有条件都必须在行或列中,并且不能是 2 的混合
  • @MarcSantos - 在SUMIFS 中,标准可能是一个范围。您确定有符合所有三个条件的值吗?
  • 条件可以是范围是的,但在这种情况下会出错。这就是我面临的问题。是的,我很肯定有符合三个条件的值。我测试了这个问题,问题在于最后一个标准,这个人的名字。我相信,因为它是一个专栏。如果我删除了它有效的最后一个条件,但它不会像我希望的那样工作
  • @MarcSantos - 等一下,Payroll - Extra 表中列出的名称在哪里,是在 Column C 还是在 Row 1
猜你喜欢
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 2015-03-25
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
相关资源
最近更新 更多