如何在 Excel 中计算不同行两列中两个日期之间的差值

如何在 Excel 中计算不同行两列中两个日期之间的差值

我有一个电子表格,其中有两列包含日期,另一列包含房间号:

日期 约会 房间号
2023 年 2 月 3 日 2023 年 2 月 5 日 1 号房间
2023 年 2 月 5 日 2023 年 2 月 8 日 1 号房间
2023 年 2 月 8 日 2023 年 2 月 10 日 1 号房间
2023 年 3 月 23 日 2023 年 3 月 26 日 1 号房间
2023 年 3 月 30 日 2023 年 3 月 31 日 5 号房间
2023 年 4 月 6 日 2023 年 4 月 8 日 6 号房间
2023 年 4 月 13 日 2023 年 4 月 14 日 1 号房间
2023 年 4 月 19 日 2023 年 4 月 21 日 2 号房间
2023 年 4 月 23 日 2023 年 4 月 26 日 3 号房间

我想计算一下有多少个date out- 下一个date in是同一个房间,房间号 = 0 或大于 1。

有什么办法可以做到这一点?

任何建议都会被接受。谢谢 例子

使用匹配的示例

答案1

你可以尝试以下公式:

在此处输入图片描述


H27 中的公式:=SUM(IF(C26:C34=F25, IF(ISNUMBER(MATCH(B26:B34, A26:A34, 0)), 1, 0)))

H28 中的公式:=SUM(IF(C26:C34=F25, IF(ISNUMBER(MATCH(B26:B34, A26:A34, 0)), 0, 1)))


如果您使用的是更高版本的 Excel(例如 2021 或 365),那么您也可以尝试此方法。

H27:=COUNT(FILTER(B26:B34, (C26:C34=F25)*(ISNUMBER(MATCH(B26:B34, A26:A34, 0))=TRUE)))

H28:=COUNT(FILTER(B26:B34, (C26:C34=F25)*(ISNUMBER(MATCH(B26:B34, A26:A34, 0))=FALSE)))


注意:

  • 单元F25格有条件,并且可以编辑,最好创建下拉菜单。
  • 根据需要调整单元格引用。

答案2

使用 =DAYS(end,start) 公式 在 C1 中,A1 是开始日期,B1 是结束日期 =DAYS(B1,A1)

答案3

我现在才注意到您标记了 Excel 2007:

您可能希望使用该版本: =SUM(--ISNUMBER(MATCH(B2:B10&F3,A2:A10&F3,0))) =SUM(ISNA(MATCH(B2:B10&C2:C10,A2:A10&C2:C10,0))*(C2:C10=F2))-1

!!请注意,这两个公式都需要输入ctrl+shift+enter

第一个返回 C 列中的房间等于 的值的结果数,其中 的F3外出日期值也在房间等于 的入住日期列中找到F3

第二个函数返回入住日期值不等于退房日期值不等于房间数的数字F3。但由于总是有一个没有更晚日期的最后一个值;我们从总数中减去 1。

如果您使用 Office 365,您可以实现以下目标:

也许我的回答不符合您要求的格式,但我认为这可能会给您更多的见解:

=LET(sorted,SORT(A2:C10,{3,2}),
     room,TAKE(sorted,,-1),
     roomcomp,(DROP(room,-1)=DROP(room,1)),
     indate,DROP(TAKE(sorted,,1),1),
     outdate,DROP(INDEX(sorted,,2),-1),
VSTACK(HSTACK(A1:C1,
              "next date in "&{"=",">"}&" previous date out"),
       IFERROR(HSTACK(sorted,
                      (roomcomp)*(outdate=indate),
                      (roomcomp)*(outdate<indate)),
               "")))

它将显示相同的范围,但按房间排序,然后按日期排序,并按行排序下一个日期等于或大于上一个日期的结果。这样,您还可以看到条件适用于哪些日期。

在此处输入图片描述

基本上它的作用是=(B2:B9=A3:A10)*(C2:C9=C3:C10)=(B2:B9<A3:A10)*(C2:C9=C3:C10)但是在范围 B2:C10 上按房间排序,然后按日期(出)排序。

创造更多洞察力的另一种方式是显示最后一天的外出情况,其中同一房间的进出日期是连续的:

=LET(a,A2:A10,b,B2:B10,c,C2:C10,r,SEQUENCE(ROWS(a)),MAP(a,b,c,LAMBDA(u,v,w,REDUCE(v,r,LAMBDA(x,y,XLOOKUP(x&w,a&w,b,x))))))

在此处输入图片描述

相关内容