Googleスプレッドシートで過去の為替レートを照会できるかどうか知りたいのですが。
例えば;式=GoogleFinance("CURRENCY:USDEUR")
を使用すると、現時点でUSD/EURレートが返されます。過去のレートを取得するにはどうすればよいですか?
履歴レートを取得するには、次の式を使用する必要があります。
=GoogleFinance("eurusd","price",today()-1,today())
today()-1、today()は、上記の例のように、静的な日付のペアとして、または暗黙的に動的に計算された値として明示的に定義できる、希望の時間間隔です。この式は、日付と終値の2列の配列を返します。適切なセル形式(日付/数値)に注意することが重要です。そうしないと、データが破損します。
列ヘッダーのない日付と通貨の為替レートで純粋な行を取得する場合は、INDEX()関数で式をラップします。
=INDEX(GoogleFinance("eurusd","price",today()-1,today()),2,)
為替レートの値のみを取得するには、列番号パラメーターを定義します。
=INDEX(GoogleFinance("eurusd","price",today()-1,today()),2,2)
今日の為替レートをGoogle Docs/SpreadsheetからGoogle Financeで取得するには:
=GoogleFinance("eurusd","price",today())
追伸少し前に、今日のレートを取得するための短い方法に問題がありましたが、今では機能し、再び使用できます:
=GoogleFinance("currency:usdeur")
追伸Microsoft Excelでライブ通貨為替レートを取得する方法:
試して、
=GoogleFinance("usdeur","price",date(2013,12,1),date(2013,12,16))
日付がスプレッドシートの設定に従っていることを確認してください。
コメントとして編集し、1日のデータをキャプチャする日付を変更します-
ヘッダーのみ:
=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日間のUSDとEURのINDEXを使用する必要があります(通貨の場合、同じ最初の変数で一緒になります)。
=INDEX(GoogleFinance(USDEUR;"price";today()-30;today());2;2)
ヒント:SPARKLINEのINDEXを次のように変更するだけで、セルのサイズ全体にわたってgraphを取得できます。
=SPARKLINE(GoogleFinance(USDEUR;"price";today()-30;today());2;2)
Vasimの答えは素晴らしいですが、その日の交換日のみが必要な場合は、範囲を省略して次のように日を指定するだけでよいことに注意してください
= FILTER(INDEX(GoogleFinance( "usdeur"、 "price"、today()), 2)、INDEX(GoogleFinance( "usdeur"、 "price"、today()), 2)<> "Close")
GOOGLEFINANCE
は一部の日付でN/Aを返すことに気付くかもしれません。これは、日付が休日(通常は週末)であるためです。指定できる日付から最後の作業を取得することができます。 2015年6月21日は日曜日なので、6月19日(金曜日)の料金をリクエストする必要があります。提案されたWORKDAY
関数を介してこれを行うことができます here :
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()を変更しても、エラーは継続します。回避策は、小さな部品を新しいスプレッドシートにコピーすることですが、失敗することがよくあります。
別の方法として、xレートの履歴通貨交換データのWebスクレーパーとしてImportXMLを使用しました。
=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()よりもはるかにうまく機能しました