【问题标题】:Lookup rate with Index/Match with two criteria including one date range具有两个条件(包括一个日期范围)的索引/匹配的查找率
【发布时间】:2017-04-25 13:28:36
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: excel date excel-formula


    【解决方案1】:

    编辑:

    SottCraner 的公式非常简洁。

    =SUMIFS(D:D,A:A,F3,B:B,"<=" & G3,C:C,">=" & G3)
    

    这应该可以:{=SUM(IF(F3=$A$2:$A$16,IF((G3&gt;=$B$2:$B$16)*(G3&lt;=$C$2:$C$16),$D$2:$D$16,0),0))}

    【讨论】:

    • 标准的 SUMIFS() 不起作用吗? =SUMIFS(D:D,A:A,F3,B:B,"&lt;=" &amp; G3,C:C,"&gt;=" &amp; G3)
    • @ScottCraner 是的,。 SUM +IF 兼容旧版本。开玩笑。 :) ** SUMIFS() 解决方案是完美的**
    • 我什至没有想过 SUMIFS!非常感谢!
    【解决方案2】:

    这将处理日期不在要求范围内的两种情况:

    这是一个数组公式,所以在G1中需要名称,在H1中需要日期,在I1中输入它

    Ctrl-Shift-Enter

    =INDEX($D:$D,MAX(MAX(IF($A$2:$A$16=$G$1,IF($H$1&gt;=$B$2:$B$16,ROW($C$2:$C$16)))),MATCH($G$1,$A:$A,0)))

    【讨论】:

      猜你喜欢
      • 2016-01-14
      • 2020-04-27
      • 1970-01-01
      • 2019-01-26
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多