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

问题描述 投票:2回答:1

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

例:

  • 房价1:1/1/2017 - 4/30/2017 5美元
  • 房价2:5/1/2017 - 6/30/2017 6美元
  • 房价3:7/1/2017 - 12/31/2017 7美元

苹果每月

  • Jan:10
  • 2月:30
  • 3月10日
  • 四月:50
  • 五月:40
  • Jun: 70
  • 七月:80
  • 8月:40
  • 9月20日
  • 10月10日
  • 11月40日
  • 十二月:100

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

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

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

google-sheets formula
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.