基于日期在其他工作表同步行数据的技术问题求助
解决每日工作表自动提取主日志对应行的问题
现有公式问题分析
QUERY公式错误原因
你当前的QUERY公式:
=QUERY('Freewire Log Template'!A3:O, "Select * where J contains '"&B$1&"'",1)
问题出在单元格引用的拼接方式错误:你把B$1放在了双引号包裹的查询字符串内部,且引号嵌套混乱,导致QUERY无法识别B$1的实际值,反而把&B$1&当成了要匹配的文本内容,自然返回不匹配的行。
INDEX+MATCH公式错误原因
你的INDEX+MATCH公式:
=INDEX('Freewire Log Template'!A3:O$22, MATCH(B$1,{'Freewire Log Template'!J3:J$22},0))
问题在于只能返回第一个匹配项,当你下拉公式时,没有处理多匹配场景,导致重复显示第一行数据;另外用{}包裹J列范围属于多余操作,不影响结果但没必要。
修正后的解决方案
方案1:修正QUERY公式(推荐)
根据J列数据类型选择对应写法:
- 如果J列是日期格式:
用=QUERY('Freewire Log Template'!A3:O, "Select * where J = date '"&TEXT(B$1,"yyyy-mm-dd")&"'", 1)TEXT函数把B1的日期转成QUERY能识别的yyyy-mm-dd格式,再拼接进查询字符串,实现精确匹配。 - 如果J列是文本格式的日期/标识:
直接把B1的文本值拼接进查询字符串,注意单引号包裹文本内容。=QUERY('Freewire Log Template'!A3:O, "Select * where J = '"&B$1&"'", 1)
方案2:INDEX+MATCH数组公式(返回所有匹配行)
如果需要提取所有符合条件的行,用数组公式实现逐行返回:
=ARRAYFORMULA(IFERROR(INDEX('Freewire Log Template'!A3:O, SMALL(IF('Freewire Log Template'!J3:J=B$1, ROW('Freewire Log Template'!J3:J)-ROW('Freewire Log Template'!J3)+1), ROWS(A$1:A1)), COLUMN(A:O))))
把公式放在每日工作表的起始单元格(比如A3),下拉即可依次显示所有匹配的行,IFERROR用于处理无匹配时的空白显示。
内容的提问来源于stack exchange,提问作者Xarkkal
相关产品推荐
相关产品推荐

