Google Sheets:如何用QUERY横向整合两个GOOGLEFINANCE表格?
问题解答
1. QUERY能否执行横向整合?
QUERY函数本身不支持直接的横向关联整合(类似SQL的JOIN操作),它默认只能处理垂直堆叠的数据集。你之前用{A; B}的写法是垂直拼接两个GOOGLEFINANCE结果,最终仅生成Col1(日期)和Col2(价格)两列,因此会出现Col4不存在的错误。
2. 实现收盘价对比计算的替代方法
方法一:用VLOOKUP按日期对齐数据(适配日期不匹配场景)
通过VLOOKUP将指数的收盘价匹配到对应股票的日期行,形成「日期、股票价格、指数价格」的三列数据,再用QUERY计算比值:
=SPARKLINE( ARRAYFORMULA( QUERY( { GOOGLEFINANCE(S27; "price"; R27; R27+30)\ VLOOKUP( INDEX(GOOGLEFINANCE(S27; "price"; R27; R27+30);;1); GOOGLEFINANCE(":INX"; "price"; R27; R27+30); 2; FALSE ) }; "select Col1, Col2/Col3 where Col3 is not null"; 1 ) ); { "charttype"\ "line"; "linewidth"\ 1; "color"\ "#5f88cc" } )
- 逻辑:先用
INDEX提取股票查询的日期列,再用VLOOKUP在指数查询结果中匹配对应日期的收盘价,最后通过QUERY过滤掉匹配失败的行并计算比值。
方法二:直接横向拼接数据(仅适用于日期完全匹配场景)
如果股票和指数的查询日期范围完全一致(无缺失交易日),可以直接用INDEX提取各自的日期和价格列,横向拼接后计算比值:
=SPARKLINE( QUERY( { INDEX(GOOGLEFINANCE(S27; "price"; R27; R27+30);;1)\ INDEX(GOOGLEFINANCE(S27; "price"; R27; R27+30);;2)\ INDEX(GOOGLEFINANCE(":INX"; "price"; R27; R27+30);;2) }; "select Col1, Col2/Col3"; 1 ); { "charttype"\ "line"; "linewidth"\ 1; "color"\ "#5f88cc" } )
- 逻辑:通过
INDEX分别提取两个查询的日期、价格列,横向拼接成三列,再用QUERY计算股票价格与指数价格的比值。
内容的提问来源于stack exchange,提问作者Quuh
相关产品推荐
相关产品推荐

