在Google工作表中,您如何使用googlefinance来获取日期范围内股票的高价?

时间:2018-05-19 04:45:12

标签: google-sheets google-finance stockquotes

我编写了以下公式,它只返回开始日期的高点,而不是整个日期范围的高点:= INDEX(GoogleFinance(C7,“high”,A7,B7,“DAILY”),2 ,2)

其中C7是包含股票代码的Google表格单元格,A7包含开始日期,B7包含结束日期。

2 个答案:

答案 0 :(得分:1)

请尝试:

=max(INDEX(GoogleFinance(C7,"high",A7,B7,"DAILY"),0,2))
最后

0,2而不是2,2返回范围而不是来自它的单元格和MAX的最大值。

答案 1 :(得分:0)

公式:

=MAX(INDEX(GOOGLEFINANCE(C7, "high", A7, B7), , 2))

...在您的示例中,将返回股票在A7和B7日期之间的高价。 1

它如何工作?

使用公式:

=GOOGLEFINANCE(<symbol>, "high", <StartDate>, <EndDate>)

=GOOGLEFINANCE(C7, "high", A7, B7)(在您的示例中)

…将返回一个数组,看起来像这样:

使用INDEX()函数,可以将该数组转换为高值的单列:

=INDEX(GOOGLEFINANCE(C7, "high", A7, B7), , 2)

现在,您可以将该数组传递到MAX()函数中,以在单个单元格中获得最大值:

=MAX(INDEX(GOOGLEFINANCE(C7, "high", A7, B7), , 2))

1 重要说明:

如果您在GOOGLEFINANCE的“高价”功能中包含日期范围,则在当前交易日内包含今天的价格-因此如果您需要将今天的高价包含在您的价格范围内,则需要将今天的高价与历史数据进行明确比较。

例如,函数=GOOGLEFINANCE(symbol, "high")为您提供今天的高价,因此:

=MAX(GOOGLEFINANCE(C7, "high"), MAX(INDEX(GOOGLEFINANCE(C7, "high", TODAY()-30, TODAY()), , 2)))

…将为您提供过去30天(包括今天)的高价。

如果您的日期范围可能仅包括今天(即没有A7和B7今天都等于今天的历史数据),那么上述公式将返回#NA。我有最终的解决方案来生成正确的数组,即使它不包含历史数据也是如此。

防弹解决方案

无论指定什么日期范围,下面的公式都会捕获#NA条件并构建包含今天高点的数组:

=MAX(INDEX({IFNA(GOOGLEFINANCE(E7, "high", A7, TODAY()), {"Date", "High"}); NOW(), GOOGLEFINANCE(E7, "high")}, , 2))

我被这个怪癖咬了好几次了,这个解决方案似乎涵盖了所有情况。享受吧!