如何在Google Sheets中按Library #匹配行并提取该行最后演出日期?
实现方案
前置说明
默认两个工作表命名如下,你可以根据自己的实际命名替换公式里的对应内容:
- 工作表1(歌曲清单)命名为
歌曲清单,Library #字段在B列,Last Performance Date字段在D列 - 工作表2(演出日期清单)命名为
演出日期清单,Library #字段在B列,所有日期列从C列开始往后排列
公式使用
1. 单单元格填充(需要手动下拉扩展)
在歌曲清单的D2单元格(第一首歌曲对应的Last Performance Date位置)输入以下公式,回车后下拉到所有行即可:
=LET( matched_dates, FILTER('演出日期清单'!C:ZZ, '演出日期清单'!B:B=B2, ""), TAKE(TOCOL(matched_dates, 1), -1) )
2. 整列自动填充(无需下拉,新增行自动计算)
直接在歌曲清单的D列列头下方的首个空单元格(即D2)输入以下公式,整列结果会自动生成:
=BYROW(B2:B, LAMBDA(library_id, IF(library_id="", "", LET( matched_dates, FILTER('演出日期清单'!C:ZZ, '演出日期清单'!B:B=library_id, ""), TAKE(TOCOL(matched_dates, 1), -1) ) ) ))
公式逻辑说明
- 用
FILTER按Library #匹配工作表2中对应歌曲的整行日期内容 - 用
TOCOL把匹配到的行数据转为单列,第二个参数设为1直接过滤所有空值 - 用
TAKE取转换后列的最后一个元素,就是最晚的演出日期 - 如果匹配到的行没有任何日期,返回空值,符合需求
适配调整
如果你的表格字段位置和默认假设不同,只需要修改公式中对应参数即可:
- 把
'演出日期清单'替换为你自己的工作表2名称 - 把
'演出日期清单'!C:ZZ替换为你工作表2实际日期列的范围 - 把
B2/B:B替换为你工作表1中Library #字段所在的列位置
内容的提问来源于stack exchange,提问作者Bryan Hurst
相关产品推荐
相关产品推荐

