在我们的咨询业务中,我们会根据个人收费率向客户收取费用。这些费率可能随时间而变化。为了能够及时向客户开具任何服务的发票,我想构建一个可以促进此过程的Excel工作表。
+--------------+------------+------------+-----------+
| Name | Begin | End | Rate |
+--------------+------------+------------+-----------+
| Paul Brown | 2016-01-01 | 2016-01-31 | $10.00 |
| Paul Brown | 2016-02-01 | 2016-03-02 | $20.00 |
| Paul Brown | 2016-03-03 | 2016-04-02 | $30.00 |
| Paul Brown | 2016-04-03 | 2016-05-03 | $40.00 |
| Anna Red | 2016-02-15 | 2016-03-16 | $100.00 |
| Anna Red | 2016-03-17 | 2016-04-16 | $127.00 |
| Anna Red | 2016-04-17 | 2016-05-17 | $145.00 |
| Martin Blue | 2016-01-01 | 2016-04-30 | $300.00 |
| Martin Blue | 2016-05-01 | 2017-02-25 | $400.00 |
| Susan Yellow | 2014-01-03 | 2014-12-29 | $10.00 |
| Susan Yellow | 2014-12-30 | 2016-08-21 | $30.00 |
| Susan Yellow | 2016-08-22 | 2016-09-21 | $50.00 |
| Susan Yellow | 2016-09-22 | 2016-10-22 | $190.00 |
| Susan Yellow | 2016-10-23 | 2016-11-22 | $200.00 |
| Susan Yellow | 2016-11-23 | 2016-12-23 | $210.00 |
+--------------+------------+------------+-----------+
在我的Excel工作表中,我希望能够输入此人的姓名和任何日期,它应该给我正确的结算率。
所以,例如键入Susan Yellow和08/26/16应该返回50美元,因为它在这个日期范围内下降。
+-------------+------------+----------+
| Susan Yellow | 2016-08-26 | $50.00 |
+-------------+------------+----------+
第一个结算费率之前的日期应默认为第一个结算费率,而没有当前结算费率的日期应默认为最后一个结算费率(例如01/02/2018)。
通常情况下,我只会使用索引/匹配公式,但我的问题是我无法组合条件/构建帮助列,因为这会破坏日期范围函数。我可以改为定义自定义表格数组,但我不知道每个搜索区域有多长,因为一些顾问可以拥有相当的历史记录而其他人可能很短。
任何人都知道我可以在Excel / Google表格中解决这个问题的公式吗?
谢谢!
答案 0 :(得分:1)
编辑:
SottCraner的公式非常简洁。
=SUMIFS(D:D,A:A,F3,B:B,"<=" & G3,C:C,">=" & G3)
这应该有效:{=SUM(IF(F3=$A$2:$A$16,IF((G3>=$B$2:$B$16)*(G3<=$C$2:$C$16),$D$2:$D$16,0),0))}
答案 1 :(得分:1)
这将处理日期不在要求范围内的两种情况:
这是一个数组公式,因此在G1中需要名称,在H1中需要日期,请在I1中输入
<强>控制移输入强>
=INDEX($D:$D,MAX(MAX(IF($A$2:$A$16=$G$1,IF($H$1>=$B$2:$B$16,ROW($C$2:$C$16)))),MATCH($G$1,$A:$A,0)))