索引/匹配的查找率有两个条件,包括一个日期范围

时间:2016-12-10 00:59:24

标签: excel date excel-formula

在我们的咨询业务中,我们会根据个人收费率向客户收取费用。这些费率可能随时间而变化。为了能够及时向客户开具任何服务的发票,我想构建一个可以促进此过程的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表格中解决这个问题的公式吗?

谢谢!

2 个答案:

答案 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))}

enter image description here

答案 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)))