我试图计算某人需要付给我多少钱,而票价是在一定时期内确定的。
来宾姓名|到达日期出发日期|成人|儿童|总计|
J.Bloggs | 14/11/2019 | 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$8:$C$10,MATCH(ROW(INDEX($ZZ:$ZZ,A2):INDEX($ZZ:$ZZ,B2)),$A$8:$A$10)))*E2
这是一个数组公式,退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter。
ROW(INDEX($ZZ:$ZZ,A2):INDEX($ZZ:$ZZ,B2))
创建日期数组。
MATCH(...,$A$8:$A$10)
获取该数组并找到它在查找表中的位置。注意:查询表必须升序排列。
INDEX($C$8:$C$10,...)
依次进行这些匹配,并创建输出价格数组。
[SUMPRODUCT(...)
将所有值加在一起。
然后我们简单地乘以客人人数。