【问题标题】:Multiple output calculation SUMPRODUCT (Google Sheets)多输出计算 SUMPRODUCT(Google 表格)
【发布时间】:2013-07-12 19:49:12
【问题描述】:

我正在开发一个酒店预订日历工具,我需要计算出现在 2 个任意搜索日期之间的预订的每晚平均价格。需要考虑的事项:

  • 使用入住日期和退房日期记录预订
  • 连同一个单一的预订价格(一切都在同一行)
  • 退房日期算作空置,因为在每日入住时间之前房间将是空的
  • 我们只需要搜索 2 个日期之间的日期的预订价值
  • 需要明确的是,预订可以延长粘贴第 1 次和第 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() 满足的条件,所以我很确定这是错误的方法。命名范围的快速定位:

  • ReportExec_StartDate / ReportExec_EndDate = 搜索日期 1 / 搜索日期 2
  • Bookings_StartDate / Bookings_EndDate = 包含入住/退房日期的列

第一个 IF() 条件搜索所有延长到/超过搜索日期的预订 第二个嵌套 IF() 搜索仅在第一个搜索日期之前延长的预订 第三个嵌套的 IF() 搜索仅超出第二个搜索日期的预订

在 Excel 中这会更容易,但 Google 对我来说是一个新玩具 - 欢迎任何想法!

【问题讨论】:

    标签: array-formulas google-sheets


    【解决方案1】:

    最后,我得到了正确的数字。有许多解决方案可以填充与数据集相邻的列,但我在获得单值解决方案时遇到了很多麻烦。

    它的工作方式与大多数 SUMPRODUCT 公式非常相似:

    • 前 2 个结果集过滤部分或全部期间位于搜索日期之间的预订
    • 第三个结果集返回所有过滤预订的平均 PPN
    • 最后一个结果集使用嵌套的 IF() 返回两个搜索日期之间的预订天数

    希望它可以帮助别人:)

    =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))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多