根据每个月的数量和每个月的费率查找总价

时间:2018-01-02 14:35:00

标签: google-sheets formula

问题:基于日期添加数量乘以不同费率的最佳公式是什么?

示例:

  • 费率1:1/1/2017 - 4/30/2017 $ 5
  • Rate 2:5/1/2017 - 6/30/2017 $ 6
  • Rate 3:7/1/2017 - 12/31/2017 $ 7

每月苹果

  • Jan:10

  • 2月:30

  • Mar:10
  • Apr:50
  • May:40
  • Jun:70
  • Jul:80
  • 8月:40
  • Sep:20
  • 10月10日
  • 11月:40
  • Dec:100

日期是2017年5月9日。公式会发现日期从Rate 2开始,以Rate 3结束。

所以,计算方法是:
 ((40+70)*$6) +((80+40+20+10+40+100) *$7 )) = $2,690.00

以这种方式计算的最佳公式是什么?使用SUMPRODUCT?我很困惑......

1 个答案:

答案 0 :(得分:1)

格式化费率的查找表,其中第一列是每个费率生效的日期:

+----------+---+
| 1/1/2017 | 5 |
| 5/1/2017 | 6 |
| 7/1/2017 | 7 |
+----------+---+

我们说上面是A1:B3。现在,您可以使用

查找任何日期的费率(例如日期在C9中)
=vlookup(C9, A1:B3, 2, True)

此处vlookup在第一列中搜索日期,并从第二列返回小于或等于搜索键的最近匹配值。

然后你可以像这样使用sumproduct:

=sumproduct(D9:D15, arrayformula(vlookup(C9:C15, A1:B3, 2, True))

此处查找C9:C15范围内每个日期的费率(因此这些日期应该是每个月的第一天)。

最后,你想要做到这一切,给定一个像5/9/2017的日期。假设此日期在E1中。我们在那里做1。比如说,在F1中:

=date(2017, month(E1), 1) 

然后按日期至少为F1的条件过滤日期/金额数组:filter(C:C, C >= F1)。最终结果将是

=sumproduct(filter(D:D, C:C >= F1), arrayformula(vlookup(filter(C:C, C >= F1), A1:B3, 2, True))