Google Sheet Query技术求助:提取列中数字对应的提取日期
Google Sheets 匹配数值对应日期的解决方案
针对你的需求——找出I列每个数值在B-G列中出现时对应的A列日期,这里提供两种可行的方法:
方法一:FLATTEN + QUERY 组合
如果单独处理I列某个单元格(比如I2)的数值,在对应单元格输入:
=QUERY(FLATTEN(A2:A104, B2:G104), "select Col1 where Col2 = "&I2&"", 0)
FLATTEN(A2:A104, B2:G104)会把A列日期和B-G列的数值一一对应展开成两列(Col1是日期,Col2是数值)- Query语句筛选出Col2等于I2值的所有Col1(日期)
如果要批量处理I列所有数值,用BYROW实现自动遍历,在J2单元格输入:
=BYROW(I2:I, LAMBDA(x, IF(x="",, JOIN(", ", QUERY(FLATTEN(A2:A104, B2:G104), "select Col1 where Col2 = "&x&"", 0)))))
这样每个I列数值对应的日期会用逗号分隔,显示在J列对应位置。
方法二:FILTER + TEXTJOIN(更简洁)
单独处理I2的话,输入:
=TEXTJOIN(", ", TRUE, FILTER(A:A, (B:B=I2)+(C:C=I2)+(D:D=I2)+(E:E=I2)+(F:F=I2)+(G:G=I2)))
这个公式直接筛选A列中B-G任意一列等于I2的行,再用逗号连接所有符合条件的日期。
批量处理的话,同样用BYROW:
=BYROW(I2:I, LAMBDA(x, IF(x="",, TEXTJOIN(", ", TRUE, FILTER(A:A, MMULT(--(B:G=x), SEQUENCE(COLUMNS(B:G),1,1,0)))))))
MMULT(--(B:G=x), SEQUENCE(...)) 用来快速判断B-G列中是否存在等于x的单元格,只要有一列匹配就会返回大于0的结果,从而筛选出对应日期。
原公式的问题说明
你之前用的=query(A:G;"select A,I where {B:G}=I") 无法生效的原因:
{B:G}=I的写法不符合Query语法,Query无法识别多列与单列的这种匹配逻辑- Query的条件中不能直接引用I列作为动态值,需要通过字符串拼接的方式传入(比如
"..."&I2&"...")
内容的提问来源于stack exchange,提问作者giulius
相关产品推荐
相关产品推荐

