如何在日历布局的Google Sheet中提取匹配日期的相对单元格数据?
提取Google Sheet挂历布局中日期对应的关联数据到单行
针对挂历布局的表格,要匹配日期并提取对应两个相对单元格的数据到单行,你可以用LET+XMATCH+INDEX的组合公式来实现,比单纯的INDEX/MATCH更灵活,能同时定位行列并提取偏移数据。
场景假设(可根据实际表格调整)
假设:
- 挂历数据在名为
Calendar的工作表,日期分布在A1:Z100区域 - 每个日期对应的第一个数据在日期单元格正下方一格(区域
A2:Z101),第二个数据在正下方第二格(区域A3:Z102) - 目标工作表
entries的A列是需要匹配的日期,要把对应两个数据提取到B、C列,或者合并到同一单元格
方案1:将两个数据合并到同一单元格(比如B列)
在entries工作表的B2单元格输入以下公式:
=ARRAYFORMULA( LET( dates, Calendar!A1:Z100, data1, Calendar!A2:Z101, data2, Calendar!A3:Z102, target_dates, A2:A, MAP(target_dates, LAMBDA(d, IF(d="",, LET( pos, XMATCH(d, dates, 0), row_idx, ROW(INDEX(dates, pos)), col_idx, COLUMN(INDEX(dates, pos)), TEXTJOIN(" | ", TRUE, INDEX(data1, row_idx, col_idx), INDEX(data2, row_idx, col_idx)) ) ) )) ) )
方案2:将两个数据分列为两列(B列存数据1,C列存数据2)
在entries的B2单元格输入:
=ARRAYFORMULA( IF(A2:A="",, LET( dates, Calendar!A1:Z100, data1, Calendar!A2:Z101, pos, XMATCH(A2:A, dates, 0), INDEX(data1, ROW(INDEX(dates, pos)), COLUMN(INDEX(dates, pos))) ) ) )
在C2单元格输入:
=ARRAYFORMULA( IF(A2:A="",, LET( dates, Calendar!A1:Z100, data2, Calendar!A3:Z102, pos, XMATCH(A2:A, dates, 0), INDEX(data2, ROW(INDEX(dates, pos)), COLUMN(INDEX(dates, pos))) ) ) )
关键调整说明
- 偏移位置修改:如果你的数据不是日期下方,而是右侧(比如日期在C5,数据在D5、E5),只需把
data1和data2的区域改成Calendar!B1:AA100(右移1列)和Calendar!C1:AB100(右移2列)即可。 - 日期格式匹配:确保
Calendar和entries中的日期格式完全一致(比如都是日期型,而非文本型),否则XMATCH会匹配失败。 - 区域范围:把公式中的
A1:Z100等区域替换成你实际的挂历数据范围,避免多余计算。
内容的提问来源于stack exchange,提问作者user2872447
相关产品推荐
相关产品推荐

