如何使用QUERY函数查询两列表格中最大值对应的完整行数据
QUERY函数返回空值的修正方案
首先你当前使用的公式存在两个核心错误:
- 数值匹配格式错误:
MAX()返回的是数字类型的收入值,你在拼接QUERY语句时给它套了单引号,会强制转为字符串格式,I列的数字无法和字符串完成匹配,因此返回空结果 - MAX计算范围错误:如果
Income_Data_wDate是包含多列的整张交易表,直接调用MAX(Income_Data_wDate)会返回整个表格所有单元格的最大值,若你需要匹配收入列的最大值,需要明确指定MAX的计算范围为收入列
修正后公式
如果你的收入数据存在命名范围的第9列(即原公式对应的I列),要返回所有最高收入对应的整行交易记录,使用以下公式:=QUERY(Income_Data_wDate,"SELECT * WHERE I = "&MAX(Income_Data_wDate!I:I))
如果你的需求仅为提取最高收入对应的交易日期,假设日期存储在命名范围的第1列(A列),可使用以下公式,加LIMIT 1避免多条相同最高收入记录返回多个结果:=QUERY(Income_Data_wDate,"SELECT A WHERE I = "&MAX(Income_Data_wDate!I:I)&" LIMIT 1")
验证步骤
- 单独运行
=MAX(Income_Data_wDate!I:I),确认返回值和你表格里的最高收入值一致,排除范围引用错误 - 确认收入列(I列)的单元格格式为数字/货币格式,不要设置为文本格式,否则会导致MAX计算异常
- 如果确认收入列是命名范围的第9列,也可以用
INDEX引用避免跨表列名错位问题:=QUERY(Income_Data_wDate,"SELECT * WHERE Col9 = "&MAX(INDEX(Income_Data_wDate,,9)))
内容的提问来源于stack exchange,提问作者whawleyjr
相关产品推荐
相关产品推荐

