Excel Sumproduct / Sumif基于两个表中的多个条件,顺序不正确

时间:2018-06-28 15:02:39

标签: excel

我已经苦苦挣扎了好一阵子了,还没有找到解决方案,所以任何帮助将不胜感激!

我正在尝试建立一个公式,该公式基于散布在两个表中的条件来汇总一列中的值(以下已简化):

表1

+-------------+---------+---------------------+------------+----------+------+
| Customer ID | Twin ID | Customer Entry Date | Exit Date  | Spending | Days |
+-------------+---------+---------------------+------------+----------+------+
|         111 |     333 |          24.12.2015 | 28.05.2018 |     5000 |  200 |
|         222 |     444 |          19.06.2014 |            |     4000 |  300 |
+-------------+---------+---------------------+------------+----------+------+

表2

+-------------+---------+---------------------+-----------+----------+------+
| Customer ID | Twin ID | Customer Entry Date | Exit Date | Spending | Days |
+-------------+---------+---------------------+-----------+----------+------+
|         444 |         |                     |           |          |  200 |
|         333 |         |                     |           |          |    0 |
+-------------+---------+---------------------+-----------+----------+------+

我现在需要找到一个公式,该公式将允许我根据以下条件总结表1中的“支出”列:

  • 表1中的“ Twin ID”不为空,并且值与表2中的“ Customer ID”值匹配->这对我来说是主要的麻烦,因为表2中的Customer ID顺序不同比表1中的孪生ID
  • 表1中的
  • “进入日期”是<特定日期
  • 表1中的“退出日期”为> =特定日期或为空
  • 表2中的“天数”> 0(对于与表1中的孪生ID相匹配的相应客户ID)

或换句话说:“如果客户111,222等有一个双胞胎,并且该双胞胎的天数> 0,并且该客户的出入日期是<>特定日期或为空,则对这些客户”

我尝试了SUMPRODUCT公式的各种迭代,并且只要两个表的顺序相同(例如,Twin ID“ 333”位于表1的第2行和表2的行中),该方法就可以正常工作。 2):

=SUMPRODUCT(--(Table1!Customer Entry Date<DATE1);--(Table1!Exit Date>=Date2);--(Table1!TwinID<>"");--(Table2!Days>0);Table1!Spending)

是否有任何方法可以使该公式起作用而与行项的顺序无关(即,双ID“ 333”位于表1的第2行和表2的第3行中)?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

尝试一下

=SUMPRODUCT((Table1!Customer_Entry_Date<Date1)*(Table1!Customer_Entry_Date>Date2)*(Table1!Twin_ID<>"")*(COUNTIFS(Table2!Customer_ID,Table1!Twin_ID,Table2!Days,">0")>0)*Table1!Spending)

它类似于您的公式,但是使用Countifs来查看表2的Twin ID中是否有匹配的客户ID在表2中。

请注意,您的命名范围(如果使用的是该名称)不应包含列标题,否则在尝试进行乘法运算时会出现#Value错误。

您可以通过将IF(Isnumber())放在方括号的最后部分来避免这种情况,但随后必须将其作为数组公式输入

=SUM((Table1!Customer_Entry_Date<Date1)*(Table1!Customer_Entry_Date>Date2)*(Table1!Twin_ID<>"")*(COUNTIFS(Table2!Customer_ID,Table1!Twin_ID,Table2!Days,">0")>0)*IF(ISNUMBER(Table1!Spending),Table1!Spending))

答案 1 :(得分:0)

我设法解决了这个问题。

任何面临类似问题的人,请查看示例文件以获取解决方案:https://wetransfer.com/downloads/90aedc5943f52274e36102a79e23c18e20180628212338/2fd1c1

=+SUMPRODUCT(SUMIF(Table1TwinID;Table2CustomerID;Table1Spending)*(Table2Days>0)*((COUNTIFS(Table1TwinID;Table2CustomerID;Table1EntryDate;"<"&DATE1)*COUNTIFS(Table1TwinID;Table2CustomerID;Table1ExitDate;">="&DATE2))+(COUNTIFS(Table1TwinID;Table2CustomerID;Table1EntryDate;"<"&DATE1)*COUNTIFS(Table1TwinID;Table2CustomerID;Table1ExitDate;""))))