【发布时间】:2014-01-03 15:35:06
【问题描述】:
我想知道是否可以在 Google 电子表格上查询过去的汇率。
例如;使用公式=GoogleFinance("CURRENCY:USDEUR") 将返回当前的美元/欧元汇率。如何检索历史汇率?
【问题讨论】:
标签: google-sheets google-docs currency-exchange-rates
我想知道是否可以在 Google 电子表格上查询过去的汇率。
例如;使用公式=GoogleFinance("CURRENCY:USDEUR") 将返回当前的美元/欧元汇率。如何检索历史汇率?
【问题讨论】:
标签: google-sheets google-docs currency-exchange-rates
为了检索历史汇率,您必须使用以下公式:
=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 财经 在 Google 文档/电子表格 中获取今天的货币汇率:
=GoogleFinance("eurusd","price",today())
附:前段时间获取今天的费率的捷径存在问题,但现在它可以工作了,您可以再次使用:
=GoogleFinance("currency:usdeur")
附:如何在 Microsoft Excel 中获取实时货币汇率:
【讨论】:
=GOOGLEFINANCE("CURRENCY:EURCHF", "price", A2) 不起作用,其中A2 是带有日期的列。任何提示?
A2中的日期应该是单元格的日期格式,这样才能正确解析。请同时检查:日期格式和单元格格式。我刚刚尝试过12/29/2019 和2019-12-29,它可以工作,而29.12.2019 不行。
试试,
=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")
【讨论】:
所有与 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)
【讨论】:
Vasim 的回答非常好,但是请注意,如果您只想要当天的交换日期,您可以省略范围并只指定日期,如下所示
=FILTER(INDEX(GoogleFinance("usdeur","price",today()),,2),INDEX(GoogleFinance("usdeur","price",today()),,2)"关闭")
【讨论】:
您可能会注意到GOOGLEFINANCE 在某些日期会返回 N/A,这是因为该日期是休息日(通常是周末),您可以做的是从指定日期获取最后一个工作,例如2015 年 6 月 21 日是星期日,所以您应该索取 6 月 19 日(星期五)的价格,您可以按照 here 的建议通过 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)
【讨论】:
对于较大的电子表格,Google 表格的限制通常会随机显示以下错误:
即使按照预期的参数 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() 好太多了
The ImportXML Guide for Google Docs from beginner to advanced
【讨论】:
其他选项是使用来自this Google Sheets add-on 的CurrencyConverter 函数。
它速度快,语法简单。例如,
=CurrencyConverter(100, "USD", "EUR", "2/28/2020")
返回91.09957183
【讨论】: