使用Google Finance获取近11日高低点日期出错,请求排查
问题分析与修正方案
你的公式返回错误日期,核心是两个问题:
- 未排除表头行:GOOGLEFINANCE返回的数组自带表头(第一行是"Date"和"High"/"Low"),直接排序会让表头参与排序逻辑,打乱结果。
- 取行号错误:你需要的是排序后对应最高/最低价格的第一行日期,但公式里取了第2行,这会拿到次高/次低的日期,甚至因为表头干扰返回完全错误的历史日期。
修正后的公式
获取近11日高点日期
=TO_DATE(INDEX(SORT(INDEX(GOOGLEFINANCE("nse:BAJFINANCE", "high", TODAY()-11, TODAY(), "DAILY"), 2, 0), 2, FALSE), 1, 1))
获取近11日低点日期
=TO_DATE(INDEX(SORT(INDEX(GOOGLEFINANCE("nse:BAJFINANCE", "low", TODAY()-11, TODAY(), "DAILY"), 2, 0), 2, TRUE), 1, 1))
公式说明
INDEX(GOOGLEFINANCE(...), 2, 0):跳过表头行,只提取实际的交易日数据(日期+高低点数值)SORT(..., 2, FALSE/TRUE):- 高点用
FALSE:按第二列(高点数值)降序排序,第一行就是最高价格对应日期 - 低点用
TRUE:按第二列(低点数值)升序排序,第一行就是最低价格对应日期
- 高点用
INDEX(..., 1, 1):取排序后的第一行第一列,即目标日期TO_DATE():将返回的日期值转换为标准日期格式
注:TODAY()-11是取当前日期往前推11个日历日,NSE的非交易日(周末、节假日)会被GOOGLEFINANCE自动跳过,返回的是该时间段内的所有交易日数据。
内容的提问来源于stack exchange,提问作者Rinku
相关产品推荐
相关产品推荐

