51

我想知道是否可以在 Google 电子表格上查询过去的汇率。

例如; 使用公式=GoogleFinance("CURRENCY:USDEUR")将返回当前的美元/欧元汇率。如何检索历史汇率?

4

7 回答 7

98

为了检索历史汇率,您必须使用以下公式:

=GoogleFinance("eurusd","price",today()-1,today())

所需的时间间隔在哪里today()-1, today(),可以显式定义为静态日期对,也可以隐式定义为动态计算的值,如上例所示。此表达式将返回日期和结束值的两列数组。关心合适的单元格格式(日期/数字)很重要,否则您的数据将被破坏。

如果您想获得没有列标题的带有日期和货币汇率的纯行,请使用以下INDEX()函数包装您的公式:

=INDEX(GoogleFinance("eurusd","price",today()-1,today()),2,)

要仅检索汇率值,请定义列号参数:

=INDEX(GoogleFinance("eurusd","price",today()-1,today()),2,2)

要从Google Finance获取Google Docs/Spreadsheet中今天的货币汇率:

=GoogleFinance("eurusd","price",today())

PS 前段时间获取今天的费率的捷径存在问题,但现在它可以工作了,您可以再次使用:

=GoogleFinance("currency:usdeur")

PS 如何在Microsoft Excel中获取实时货币汇率:

于 2013-12-21T08:03:41.330 回答
21

尝试,

=GoogleFinance("usdeur","price",date(2013,12,1),date(2013,12,16))

确保日期符合您的电子表格设置。

编辑为评论,更改捕获单日数据的日期:-

只有标题:

=INDEX(GoogleFinance("usdeur","price",date(2013,12,3),date(2013,12,4)),,2)

没有标题:

=FILTER(INDEX(GoogleFinance("usdeur","price",date(2013,12,3),date(2013,12,4)),,2),INDEX(GoogleFinance("usdeur","price",date(2013,12,3),date(2013,12,4)),,2)<>"Close")
于 2013-12-16T11:03:11.190 回答
10

所有与 googlefinance 相关的说明都在这里: https: //support.google.com/docs/answer/3093281

请记住,实际的 Google 电子表格公式使用分号 (;) 而不是逗号 (,)。在某些示例上进行替换后,将如下所示:

对于美元兑欧元的 30 天指数,您应该使用(请注意,在货币的情况下,它们在同一个第一个变量中一起出现):

=INDEX(GoogleFinance(USDEUR;"price";today()-30;today());2;2)

提示:您可以通过简单地更改 SPARKLINE 的 INDEX 来获得整个单元格大小的图表,如下所示

=SPARKLINE(GoogleFinance(USDEUR;"price";today()-30;today());2;2)
于 2014-12-06T02:27:20.010 回答
3

Vasim 的回答非常好,但是请注意,如果您只想要当天的交换日期,您可以省略范围并只指定日期,如下所示

=FILTER(INDEX(GoogleFinance("usdeur","price",today()),,2),INDEX(GoogleFinance("usdeur","price",today()),,2)<>"Close")

于 2016-01-15T08:01:27.977 回答
3

您可能会注意到GOOGLEFINANCE某些日期会返回 N/A,这是因为该日期是休息日(通常是周末),您可以做的是从指定日期获取最后一个工作,例如 2015 年 6 月 21 日是星期日,所以你应该请求 6 月 19 日(星期五)的费率,你可以通过这里WORKDAY建议的函数来做到这一点:

WORKDAY("6/21/2015"+1,-1)

因此,生成的公式将如下所示:

INDEX(GoogleFinance("CURRENCY:USDRUB", "price", WORKDAY("6/21/2015"+1,-1),1),2,2)

此外,您想获取未来日期的汇率,您还可以检查日期是否在未来,如果是,只需使用今天的日期:

WORKDAY(IF("6/21/2099">TODAY(),TODAY(),"6/21/2099")+1,-1)
于 2019-03-21T08:55:16.597 回答
0

对于较大的电子表格,Google 表格限制通常会随机显示以下错误:

错误函数 INDEX 参数 2 的值为 2。有效值介于 0 和 1 之间。 在此处输入图像描述

即使按照预期的参数 GOOGLEFINANCE(ticker, [attribute], [start_date], [end_date|num_days], [interval]) 修改 Index() 和 GoogleFinance(),错误仍将继续。一种解决方法是将较小的部分复制到新的电子表格中,但通常会失败。

作为替代方案,我使用 ImportXML 作为 x 汇率历史货币兑换数据的网络爬虫。

=index(IMPORTXML("https://www.x-rates.com/historical/?from="&N2&"&amount="&K2&"&date="&YEAR(B2)&"-"&TEXT(B2,"mm")&"-"&TEXT(B2,"dd")&"","//td[@class='rtRates']"),1)

我假设 B 列是日期,K 是金额,N 是货币。

对于 2000 多行的电子表格,它也会随机失败,但总的来说,就我的要求而言,它比 GoogleFinance() 好太多了

ImportXML 示例

从初学者到高级的 Google 文档 ImportXML 指南

于 2018-04-28T17:58:45.273 回答
-1

其他选项是使用此 Google 表格插件中的CurrencyConverter功能。它速度快,语法简单。例如,

=CurrencyConverter(100, "USD", "EUR", "2/28/2020")

返回91.09957183

于 2020-04-13T08:24:42.113 回答