如何自动合并Google Sheets近似重复行并更新唯一值?
解决Google Sheets中Zoom考勤日志合并问题
问题分析
你当前的Zoom考勤日志会将同一参会者的**Join Time(加入时间)和Left Time(离开时间)**分别记录在两行,需要将这些重复行合并,把对应时间整合到同一行中。
原公式失效原因
你使用的公式存在几个关键问题:
- FILTER函数参数有语法错误(例如
'Reference-Sheet'!$D$4 'Reference-Sheet'!$E$4:$E$4缺少比较运算符); - 数据范围仅限定到第4行(
$C$4:C4),无法覆盖全部日志内容; - 未区分"Joined"和"Left"事件类型,无法精准提取对应时间;
- JOIN与SPLIT的逻辑未正确关联参会者与对应时间数据。
解决方案
假设你的原始数据在Reference-Sheet中:
- C列:参会者姓名
- D列:事件类型(值为"Joined"或"Left")
- E列:事件时间
- F-M列:参会者其他重复信息(如邮箱、会议ID等)
在空白工作表的A1单元格输入以下公式,可自动合并同一参会者的行,并整合所有Join/Left时间:
=ARRAYFORMULA( LET( data, 'Reference-Sheet'!C4:M, name_col, INDEX(data,,1), event_col, INDEX(data,,2), time_col, INDEX(data,,3), unique_names, UNIQUE(name_col), // 提取每个参会者的所有Join时间 join_times, BYROW(unique_names, LAMBDA(n, TEXTJOIN(", ", TRUE, FILTER(time_col, name_col=n, event_col="Joined")))), // 提取每个参会者的所有Left时间 left_times, BYROW(unique_names, LAMBDA(n, TEXTJOIN(", ", TRUE, FILTER(time_col, name_col=n, event_col="Left")))), // 合并参会者信息与对应时间 HSTACK( BYROW(unique_names, LAMBDA(n, INDEX(FILTER(data, name_col=n), 1, 2):INDEX(FILTER(data, name_col=n), 1, 11))), unique_names, join_times, left_times ) ) )
补充说明
- 如果参会者多次进出会议,
TEXTJOIN会用逗号分隔该用户的所有Join/Left时间; - 若需要按"Join-Left"配对合并(每次加入对应一次离开),可先对原始数据按姓名+时间排序,再用
INDEX提取相邻行的时间进行配对。
内容的提问来源于stack exchange,提问作者KALVIN CZEDRIC LLEVA
相关产品推荐
相关产品推荐

