我已经苦苦挣扎了好一阵子了,还没有找到解决方案,所以任何帮助将不胜感激!
我正在尝试建立一个公式,该公式基于散布在两个表中的条件来汇总一列中的值(以下已简化):
表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中的“支出”列:
或换句话说:“如果客户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行中)?
任何帮助将不胜感激!
答案 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;""))))