如何利用INDEX MATCH在Google Sheets中提取会议日程多字段数据
解决方案:基于INDEX MATCH扩展Google Sheets议程表数据提取
核心思路
你现有的公式已经通过MATCH(1, ('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3), 0)锁定了目标会话的行号,只需调整INDEX引用的列即可提取对应字段;跨时长单元格的展示可通过判断当前单元格是否为会话起始列来控制内容显示逻辑。
分步实现
1. 提取基础字段(开始/结束时间、演讲者、地点)
以提取开始时间为例,在目标单元格使用以下公式:
=IFNA(INDEX('Session Details'!$F:$F,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)))
根据字段对应列替换$F:$F:
- 结束时间:替换为
$G:$G - 演讲者:替换为
$H:$H - 地点:替换为
$I:$I
2. 实现跨时长单元格的合并展示(匹配End Goal格式)
仅在会话起始列显示完整信息
在目标单元格输入:
=IF(C$3=IFNA(INDEX('Session Details'!$D:$D,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),""), IFNA(INDEX('Session Details'!$E:$E&" | "&TEXT(INDEX('Session Details'!$F:$F,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),"HH:mm")&"-"&TEXT(INDEX('Session Details'!$G:$G,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),"HH:mm")&" | "&INDEX('Session Details'!$H:$H&" | "&INDEX('Session Details'!$I:$I,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),""), "")
公式逻辑:判断当前列时间是否为会话起始时间,是则显示「会话名称 | 时间范围 | 演讲者 | 地点」,否则留空。
跨所有时长列重复显示完整信息
直接拼接多字段,去掉起始判断:
=IFNA(INDEX('Session Details'!$E:$E,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0))&" | "&TEXT(INDEX('Session Details'!$F:$F,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),"HH:mm")&"-"&TEXT(INDEX('Session Details'!$G:$G,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),"HH:mm")&" | "&INDEX('Session Details'!$H:$H,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0))&" | "&INDEX('Session Details'!$I:$I,MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0)),"")
3. 优化公式(减少重复计算)
用LET函数封装匹配行号,提升性能:
=LET( matchRow, MATCH(1,('Session Details'!$A:$A=$C$2)*('Session Details'!$B:$B=$A16)*('Session Details'!$D:$D=C$3),0), IFNA( INDEX('Session Details'!$E:$E, matchRow)&" | "&TEXT(INDEX('Session Details'!$F:$F, matchRow),"HH:mm")&"-"&TEXT(INDEX('Session Details'!$G:$G, matchRow),"HH:mm")&" | "&INDEX('Session Details'!$H:$H, matchRow)&" | "&INDEX('Session Details'!$I:$I, matchRow), "" ) )
将匹配行号存为变量matchRow,后续直接调用,公式更简洁高效。
注意事项
- 确保
Session Details工作表的列对应正确,根据实际表格调整列引用。 - 跨时长列时,拖动公式覆盖对应范围即可,
$符号已锁定关键引用($C$2锁定日期、$A16锁定行时间点、C$3锁定列时间)。
内容的提问来源于stack exchange,提问作者sebo620
相关产品推荐
相关产品推荐

