Google Sheets使用QUERY按日期范围查询多币种数据报错咨询
问题根因
你当前公式报错的核心原因是:当使用{}构造自定义数组作为QUERY的数据源时,无法直接使用工作表原始列标A/B/C/D指代列,必须使用Col1/Col2/Col3/Col4这种按数组列顺序生成的序号指代对应列。你之前用Select *可以正常运行,是因为通配符不需要识别具体列名,不会触发该语法错误。
修复后可运行公式
=QUERY(ARRAYFORMULA({A4:B,TO_TEXT(C4:C),D4:D}),"select Col1, Col2, Col3 where Col4 >= date '"&TEXT(A$2,"yyyy-mm-dd")&"' and Col4 <= date '"&TEXT(B$2,"yyyy-mm-dd")&"' Label Col3 'Cost'")
注意事项
- 你之前给C列加
TO_TEXT转换的逻辑是对的,因为QUERY默认会按列的多数数据类型做统一转换,混合币种格式的数值如果不转文本,非美元的格式会被强制清除或者返回空值。 - 如果后续扩展数组里的列,只需要按数组从左到右的顺序递增Col的序号即可,比如你在数组最后加了E列,对应的列名就是Col5。
- 公式里A4:B如果要限定行范围可以改成具体的行区间,避免全列扫描拖慢表格运行速度。
内容的提问来源于stack exchange,提问作者allison
相关产品推荐
相关产品推荐

