Excel formula 基于涵盖不同定价期的日期的累计价格

Excel formula 基于涵盖不同定价期的日期的累计价格,excel-formula,date-range,Excel Formula,Date Range,我试图计算有人需要付给我多少钱,票价是在一定时期内设定的 客人姓名|到达日期|出发日期|成人|儿童|总计| J.Bloggs | 14/11/2019 | 18/11/2019 | 5 | 2 | 7| 价格2019年11月1日至2019年11月4日=3.40英镑 2019年11月5日至2019年11月15日的价格=2.50英镑 价格2019年11月16日至2019年11月30日=1.90英镑 我需要了解如何向J.Bloggs收取2晚(14日和15日)2.50英镑的费用,然后收取3晚(16日、1

我试图计算有人需要付给我多少钱,票价是在一定时期内设定的

客人姓名|到达日期|出发日期|成人|儿童|总计|

J.Bloggs | 14/11/2019 | 18/11/2019 | 5 | 2 | 7|

价格2019年11月1日至2019年11月4日=3.40英镑

2019年11月5日至2019年11月15日的价格=2.50英镑

价格2019年11月16日至2019年11月30日=1.90英镑

我需要了解如何向J.Bloggs收取2晚(14日和15日)2.50英镑的费用,然后收取3晚(16日、17日和18日)1.90英镑的费用=10.70英镑*7人=74.90英镑

蓝色列是原始数据,绿色列是基于公式的(我不需要价格列,我只是用来计算费用)

这是我目前在价格栏中的公式,但我知道当门票覆盖多个时段时,这是行不通的

{=INDEX(Pricing!$C:$C,MATCH(1,(Pricing!$A:$A<=IF(ISTEXT($A2),DATEVALUE($A2),$A2))*(Pricing!$B:$B>=IF(ISTEXT($A2),DATEVALUE($A2),$A2)),0))}
{=INDEX(Pricing!$C:$C,MATCH(1,(Pricing!$A:$A=IF(ISTEXT($A2),DATEVALUE($A2),$A2)),0))}

将SUMPRODUCT与索引/匹配一起使用:

=SUMPRODUCT(INDEX($C$8:$C$10,MATCH(ROW(INDEX($ZZ:$ZZ,A2):INDEX($ZZ:$ZZ,B2)),$A$8:$A$10)))*E2
这是一个数组公式,在退出编辑模式时需要使用Ctrl-Shift-Enter而不是Enter

行(索引($ZZ:$ZZ,A2):索引($ZZ:$ZZ,B2))
创建一个日期数组

MATCH(…,$A$8:$A$10)
获取该数组并找到它在查找表中的位置。注意:查找表必须按升序排序

索引($C$8:$C$10,…)
依次获取每个匹配项并创建一个输出价格数组

SUMPRODUCT(…)
将所有值相加

然后我们简单地把它乘以客人的数量


感谢您在这方面的帮助。我试着使用你建议的公式,但我得到的答案是17.50英镑,这是我想要的价格的总和,但它不会乘以客人的数量,即使我有*E2元素可以做到这一点=SUMPRODUCT(索引($C$8:$C$10,匹配(行(索引($ZZ:$ZZ,A2):索引($ZZ:$ZZ,B2)),$A$8:$A$10))*E2尝试在退出编辑模式时使用Ctrl-Shift-enter确认,而不是enter。可能需要输入数组。我的Excel版本不再需要它,所以有时我不知道公式是否需要。谢谢,我的版本是Microsoft 2013,但公式在Office365中工作得非常好。ctrl+Shift在我的Excel版本中不起作用,你知道吗?这应该在2013年起作用。公式中没有office 365独有的内容。确保日期为真实日期,而不是看起来像日期的文本。还要确保数字都是数字,而不是存储为文本的数字。