基于涵盖不同定价期的日期的累积价格

Cumulative prices based on dates that cover different pricing periods

我正在尝试计算某人需要付给我多少钱,票价是为特定时期设定的。

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

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

价格 01/11/2019 ~ 04/11/2019 = £3.40

价格 05/11/2019 ~ 15/11/2019 = £2.50

价格 16/11/2019 ~ 30/11/2019 = £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))}

将 SUMPRODUCT 与 INDEX/MATCH 一起使用:

=SUMPRODUCT(INDEX($C:$C,MATCH(ROW(INDEX($ZZ:$ZZ,A2):INDEX($ZZ:$ZZ,B2)),$A:$A)))*E2

这是一个数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter。

ROW(INDEX($ZZ:$ZZ,A2):INDEX($ZZ:$ZZ,B2)) 创建日期数组。

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

INDEX($C:$C,...) 依次获取每个匹配项并创建一个输出价格数组。

SUMPRODUCT(...) 将所有值相加。

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