0

我有下表

╔════════════╦════════════╦════════╦════════╗
║ Booking    ║ Check-in   ║ Dif    ║ Status ║
╠════════════╬════════════╬════════╬════════╣
║ 25-09-2018 ║ 19-05-2019 ║ 234.15 ║ OK     ║
╠════════════╬════════════╬════════╬════════╣
║ 26-09-2018 ║ 05-05-2019 ║ 281.21 ║ OK     ║
╠════════════╬════════════╬════════╬════════╣
║ 26-09-2018 ║ 18-05-2019 ║ 264.11 ║ OK     ║
╠════════════╬════════════╬════════╬════════╣
║ 01-10-2018 ║ 19-06-2019 ║ 260.42 ║ CL     ║
╠════════════╬════════════╬════════╬════════╣
║ 01-10-2018 ║ 18-05-2019 ║ 228.16 ║ OK     ║
╚════════════╩════════════╩════════╩════════╝

我一直在尝试创建一个 sumproduct 公式,如果在状态正常的情况下入住的月份和年份与预订日期相同,则该公式将求和“Dif”。

我要生成的输出表有以下形式:

╔══════════════════╦═════╦══════╗
║ Booking/Check-in ║ May ║ June ║
╠══════════════════╬═════╬══════╣
║ September        ║     ║      ║
╠══════════════════╬═════╬══════╣
║ October          ║     ║      ║
╚══════════════════╩═════╩══════╝

我使用并收到错误的公式是:

=SUMPRODUCT(--('Data'!$D$2:$D$5="OK")*(MONTH('Data'!$A$2:$A$5)=MONTH($A2))*(YEAR('Data'!$A$2:$A$5)=YEAR($A2))*(MONTH('Data'!$B$2:$B$5)=MONTH(B$1))*(YEAR('Booking data'!$B$2:$B$5)=YEAR(B$1))*('Data'!$C$2:$C$5))

有任何想法吗?

先感谢您

4

4 回答 4

1

假设输出表中的月份名称是格式化为显示为完整月份名称的月份/年份的第一个日期,您可以使用SUMIFS

我将数据表转换为,以便能够使用结构化引用,我发现在复杂的公式中更容易理解:

=SUMIFS(Table1[[Dif]:[Dif]],Table1[[Status]:[Status]],"OK",Table1[[Booking]:[Booking]],">="&$F2,Table1[[Booking]:[Booking]],"<=" &EOMONTH($F2,0),Table1[[Check-in]:[Check-in]],">="&G$1,Table1[[Check-in]:[Check-in]],"<="&EOMONTH(G$1,0))

我们通过确保预订和/或入住日期与输出表在同一月份来确定日期。当然,这将确保月份和年份相同。

G$1和地址将$F2取决于输出表的位置。但是,一旦您输入公式,例如G2,您可以填充/向下拖动它,并且参考应该会自动调整。

在此处输入图像描述

在此处输入图像描述

于 2019-10-07T13:05:55.383 回答
1

解决方案

我认为您的输出表中的月份名称实际上是格式化为完整月份名称的日期。

如果您只想按月份名称而不是实际日期求和,这是一种方法:

=SUMPRODUCT((TEXT($A$2:$A$6,"mmmm")=$A9)*(TEXT($B$2:$B$6,"mmmm")=B$8)*($D$2:$D$6="OK")*($C$2:$C$6))

如果要按实际日期求和(考虑到年份部分),则可以使用以下公式:

=SUMPRODUCT((TEXT($A$2:$A$6,"MMM-YY")=TEXT($A13,"MMM-YY"))*(TEXT($B$2:$B$6,"MMM-YY")=TEXT(B$12,"MMM-YY"))*($D$2:$D$6="OK")*($C$2:$C$6))

根据需要修改单元格引用。干杯:)

诀窍是使用TEXT函数将日期转换为文本格式,在我的示例中是“MMM-YY”,因此可以轻松比较它们,而无需单独比较月份和年份组件。遗憾的是EOMONTH函数不支持数组计算,否则解决方案可能会稍微简单一些。

于 2019-10-07T12:11:17.537 回答
1

你需要的是数据透视表:

数据透视表

我得到了这个数据,输出是一个数据透视表:

数据:

在此处输入图像描述

输出:

在此处输入图像描述

我的数据透视表设置:

  1. Booking字段到 ROWS
  2. Check-in字段到列
  3. 两个字段 (BookingCheck-in) 都按 MONTHS 分组(检查Group or ungroup data in a PivotTable
  4. Status字段到 FILTERS 并将其设置为仅显示 OK 值
  5. Dif字段值
  6. 我还停用了总计和小计(这是可选的)

希望这可以帮助。在输出中,六月没有显示,因为六月没有 OK 值可以总结

于 2019-10-07T12:05:36.807 回答
0

谢谢大家的回复。我想出了我应该做什么。请在下面找到公式:

=SUMPRODUCT(--('Data'!$D$2:$D$5="OK"),(MONTH('Data'!$A$2:$A$5)=MONTH($A2))*(YEAR('Data'!$A$2:$A$5)=YEAR($A2))*(MONTH('Data'!$B$2:$B$5)=MONTH(B$1))*(YEAR('Data'!$B$2:$B$5)=YEAR(B$1))*'Data'!$C$2:$C$5)
于 2019-10-08T09:33:03.320 回答