You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google表格中构建公式判断派对宾客当前在场状态

派对宾客在场状态追踪公式(Google Sheets)

核心逻辑

判断宾客当前是否在场,关键看该宾客最后一次到达的时间是否晚于最后一次离开的时间——如果只有到达记录、或者最后一次动作是到达,就判定为当前在场。

方案1:FILTER + MAXIFS 组合公式

在Presence工作表的空白单元格(比如A2)输入以下公式,直接输出当前在场的宾客列表:

=FILTER(UNIQUE(Activity!B:B), 
 MAXIFS(Activity!A:A, Activity!B:B, UNIQUE(Activity!B:B), Activity!C:C, "Arrived") > 
 MAXIFS(Activity!A:A, Activity!B:B, UNIQUE(Activity!B:B), Activity!C:C, "Departed"),
 MAXIFS(Activity!A:A, Activity!B:B, UNIQUE(Activity!B:B), Activity!C:C, "Arrived") <> "")

公式拆解:

  • UNIQUE(Activity!B:B):提取所有出现过的宾客姓名,避免重复计算
  • MAXIFS(Activity!A:A, ..., "Arrived"):获取每个宾客最后一次到达的时间
  • MAXIFS(Activity!A:A, ..., "Departed"):获取每个宾客最后一次离开的时间
  • 第一个条件>:筛选出最后到达时间晚于离开时间的宾客(若宾客无离开记录,MAXIFS返回0,此时到达时间必然大于0)
  • 第二个条件<> "":过滤掉从未有过到达记录的无效条目

方案2:QUERY函数简化写法

如果习惯用QUERY语法,也可以用以下公式实现相同效果:

=QUERY(Activity!A:C, 
 "SELECT B WHERE MAX(A) GROUP BY B HAVING MAX(A) FILTER (C='Arrived') > MAX(A) FILTER (C='Departed') OR MAX(A) FILTER (C='Departed') IS NULL", 
 1)

公式说明:

  • 按宾客姓名(B列)分组,计算每组的最新时间
  • 筛选条件:最后到达时间晚于最后离开时间,或者根本没有离开记录
  • 末尾的1表示Activity表的第一行是表头,自动忽略表头行

示例验证

针对你提到的场景:

  • John有多次到达/离开记录,只要最后一次到达时间晚于9:30pm之前的离开时间,就会被判定为在场
  • Suzy只有到达记录,无离开记录,会被直接纳入在场列表

内容的提问来源于stack exchange,提问作者Peter Bentley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:56:23