如何用单个Google Sheets Query替代31个查询实现日历数据展示?
用单个公式实现日历行与交付日期的匹配
当然可以,不需要重复编写31个QUERY公式,用一个结合了QUERY的数组公式就能完成批量匹配。
方案1(推荐,简洁高效)
在主工作表的结果列首个单元格(比如B2)输入以下公式,自动填充所有31行的匹配结果:
=ARRAYFORMULA(IFNA(VLOOKUP(A2:A32, QUERY(rawdata!A2:B, "SELECT B, A"), 2, FALSE)))
- 逻辑说明:
QUERY(rawdata!A2:B, "SELECT B, A")将原始数据的交付日期和序列号调换顺序,生成供匹配的临时表VLOOKUP(A2:A32, ..., 2, FALSE)批量匹配主工作表A列的日期,返回对应的序列号ARRAYFORMULA实现批量填充,无需逐行复制公式IFNA处理无匹配日期的情况,返回空白而非错误值
方案2(纯QUERY实现,适合偏好QUERY语法的场景)
如果希望仅用QUERY完成(不借助VLOOKUP),可以使用以下公式:
=ARRAYFORMULA(IFNA(QUERY({A2:A32, rawdata!A2:B}, "SELECT Col1, Col3 WHERE Col1 = Col2 GROUP BY Col1", 0)))
- 逻辑说明:
{A2:A32, rawdata!A2:B}将主工作表的日期列与原始数据合并成一个临时数组QUERY(..., "SELECT Col1, Col3 WHERE Col1 = Col2 GROUP BY Col1")筛选出日期匹配的行,按日期分组确保每个日期仅返回一条结果ARRAYFORMULA和IFNA分别实现批量填充和错误处理
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

