web-dev-qa-db-ja.com

Googleスプレッドシートで、過去の為替レートについて「GoogleFinance」をクエリするにはどうすればよいですか?

Googleスプレッドシートで過去の為替レートを照会できるかどうか知りたいのですが。

例えば;式=GoogleFinance("CURRENCY:USDEUR")を使用すると、現時点でUSD/EURレートが返されます。過去のレートを取得するにはどうすればよいですか?

44
antr

履歴レートを取得するには、次の式を使用する必要があります。

=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でライブ通貨為替レートを取得する方法:

87
Mike B.

試して、

=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")
17
Vasim

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)
10
DavidTaubmann

Vasimの答えは素晴らしいですが、その日の交換日のみが必要な場合は、範囲を省略して次のように日を指定するだけでよいことに注意してください

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

3
user56236

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)
2
chingis

大きなスプレッドシートの場合、通常、Googleスプレッドシートの制限には次のエラーがランダムに表示されます。

Error関数INDEXパラメーター2の値は2です。有効な値は0〜1です。 enter image description here

予想されるパラメーター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()よりもはるかにうまく機能しました

ImportXMLの例

初心者から上級者までのGoogleドキュメントのImportXMLガイド

0
Damodar Das