如何在Google Sheets QUERY公式中添加动态匹配日期的列元素
动态匹配当日日期列的QUERY公式修改方案
最终可用公式
=QUERY('orders'!A1:GU2000, "select A,"®EXREPLACE(ADDRESS(1, MATCH(TODAY(), 'orders'!1:1, 0), 4), "\d+", "")&",B,D,E,F,G,H,I,J,K,L,M where "®EXREPLACE(ADDRESS(1, MATCH(TODAY(), 'orders'!1:1, 0), 4), "\d+", "")&" is not null and C='RAM'")
逻辑拆解
MATCH(TODAY(), 'orders'!1:1, 0):在orders表的表头行(第一行)搜索等于当日日期的列,返回对应的列序号(A列对应1,B列对应2,以此类推)。ADDRESS(1, 列序号, 4):根据列序号生成相对格式的单元格引用,例如列序号113会返回DI1。REGEXREPLACE(单元格引用, "\d+", ""):删除单元格引用中的行号数字,仅保留列字母标,例如把DI1处理为DI。- 用
&符号将动态生成的列标拼接到QUERY的查询字符串中,替代原本手动填写的固定列标DI。
注意事项
- 需保证orders表表头的日期格式和
TODAY()返回的日期格式完全一致,否则会出现匹配失败的#N/A错误。 - 若需要处理匹配不到的异常,可以在外层加
IFERROR包裹,示例:=IFERROR(上述完整公式, "未找到当日对应列")。 - 若表头不在第一行,将公式中
'orders'!1:1的行号1改为实际表头所在的行号即可。
内容的提问来源于stack exchange,提问作者Lesy Vin
相关产品推荐
相关产品推荐

