我正在开发酒店预订日历工具,我需要计算2个任意搜索日期之间出现的预订的每晚平均价格。需要考虑的事项:
我整天都在玩SUMPRODUCT公式,并且非常接近所需的结果 - 这个特殊的演绎只捕获了期间填充的房间总数,但修改它以返回值不是一个问题:
=ARRAYFORMULA(SUMPRODUCT(GTE(Bookings_EndDate,ReportExec_StartDate+1), LTE(Bookings_StartDate,ReportExec_EndDate+0),IF((Bookings_StartDate<=ReportExec_StartDate)*(Bookings_EndDate>=ReportExec_EndDate),((ReportExec_EndDate-ReportExec_StartDate+1)),IF(Bookings_StartDate<ReportExec_StartDate,Bookings_EndDate-ReportExec_StartDate,IF(Bookings_EndDate>ReportExec_EndDate,(ReportExec_EndDate+1)-Bookings_StartDate,0)))))
我认为这里的问题是,数组计算只输出第一个IF()满足的条件,所以我很确定这是错误的方法。命名范围的快速定位:
首先,IF()条件会搜索延伸到搜索日期之前/之后的所有预订 第二个嵌套的IF()搜索仅在第一个搜索日期之前延伸的预订 第三个嵌套的IF()搜索只延伸到第二个搜索日期
的预订在Excel中这会更容易,但谷歌对我来说是一个新玩具 - 欢迎任何想法!
答案 0 :(得分:0)
最后,我得到了正确的数字。有许多解决方案可以填充数据集旁边的列,但是我在获取单值解决方案时遇到了很多麻烦。
其工作方式与大多数SUMPRODUCT公式非常相似:
希望它可以帮助别人:)
=ARRAYFORMULA(SUMPRODUCT(NOT(GT(Bookings_StartDate,ReportExec_EndDate)), NOT(LT(Bookings_EndDate,ReportExec_StartDate)),IF(Bookings_Nights,(Bookings_ValueA/Bookings_Nights),0),(IF(Bookings_EndDate>ReportExec_EndDate,ReportExec_EndDate+1,Bookings_EndDate)-IF(Bookings_StartDate<ReportExec_StartDate,ReportExec_StartDate,Bookings_StartDate))))