You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets股票回测:查找目标价格触发日期的函数方案

解决方案

首先纠正你使用GOOGLEFINANCE时的参数错误:函数的日期参数应该是起始日期在前,结束日期在后,正确写法是=GOOGLEFINANCE(A3,"all",B3,C3),否则会获取反向时间区间的数据。

针对你要找时段内触及目标价日期的需求,推荐以下两种实用函数方案:

方案1:用FILTER+INDEX提取最早触及日期

如果你需要第一个(最早)触及目标价的日期,可使用以下公式:

=INDEX(FILTER(GOOGLEFINANCE(A3,"date",B3,C3),GOOGLEFINANCE(A3,"high",B3,C3)>=D3,GOOGLEFINANCE(A3,"low",B3,C3)<=D3),1,1)
  • 逻辑:GOOGLEFINANCE(A3,"date",B3,C3)提取时段内所有日期;high和low字段分别提取每日最高、最低价;通过>=D3和<=D3判断目标价是否落在当日价格区间内(即当日触及过目标价);FILTER筛选出符合条件的日期,INDEX取第一个结果。

方案2:用QUERY函数灵活筛选

QUERY函数支持类SQL的条件查询,更适合复杂筛选场景:

提取最早触及日期

=INDEX(QUERY(GOOGLEFINANCE(A3,"date,high,low",B3,C3),"select Col1 where Col2 >= "&D3&" and Col3 <= "&D3&" limit 1"),2,1)
  • 逻辑:GOOGLEFINANCE返回包含日期、最高价、最低价的数组;QUERY筛选出满足价格区间条件的行并提取日期列;limit 1限制只返回第一个结果;INDEX(...,2,1)跳过数组的表头行,直接取数据行的日期。

返回所有触及日期

如果需要列出时段内所有触及目标价的日期,去掉limit 1和INDEX即可:

=QUERY(GOOGLEFINANCE(A3,"date,high,low",B3,C3),"select Col1 where Col2 >= "&D3&" and Col3 <= "&D3)

为什么VLOOKUP/MATCH不适用

VLOOKUP和MATCH是基于精确匹配或近似匹配某个值来查找位置,但你的需求是基于「价格区间包含目标价」的条件筛选日期,属于条件过滤而非值匹配,因此这类函数无法直接满足需求。

内容的提问来源于stack exchange,提问作者nachiket jadhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:15:56