Kryptowährungen in Excel
Es gibt 4 drei Wege die Preise von Kryptowährungen in Excel einzuspielen.
- Datentyp Währung
- BÖRSENHISTORIE-Funktion
- Power Query Abfrage auf Websteite/API
- Office Script Abfrage auf API
1. Datentyp Währung
Preise für die folgenden Kryptowährungen lassen sich mit dem Datentyp Währung in Excel einbinden.
- Bitcoin (BTC)
- Bitcoin Cash (BCH)
- Litecoin (LTC)
- Ripple (XRP)
- Ethereum (ETH)
Dazu das gewünschte Währungspaar in eine Excel Zelle schreiben. z.B. BTC/USD oder BTC/EUR und dann die Zellenauswählen und auf Daten -> Datentypen -> Währung gehen.
Die Zelle erhält dann ein Währungssymbol und im Hintergrund werden die Informationen von diesem Währungspaar geladen. Diese kannst Du über die Schaltfläche auswählen welche sich zeigt, wenn die Zelle ausgewählt ist oder alternativ kannst Du auch auf die Zelle verweisen und dann per Punkt auf die unterschiedlichen Indikatoren zugreifen. Zum Beispiel mit =A1.Preis
Folgende Indikatoren sind verfügbar. Davon ist der Preis sicherlich der wichtigste. Mit Hilfe von Öffnen, Hoch, Niedrig und Schlusskurs des Vortages (Open, High, Low, Close) kannst Du zudem Kursdiagramme erstellen.
Die Änderung zum Vortag in absoluten Werten und in Prozent sind auch interessante Informationen.
Um die Preise zu aktualisieren einfach Rechtsklick -> Datentyp -> Aktualisieren. Du kannst den Datentyp Währung auch so einstellen, dass beim Öffnen der Datei die Daten aktualisiert werden oder auch automatisch alle 5 Minuten.
Hier eine Beispieldatei mit den 5 Kryptowährungen die sich über den Datentyp Währung laden lassen.
2. Börsenhistorie
Für historische Werte kann man die Funktion BÖRSENHISTORIE verwenden. Diese liefert uns jedoch leider keine aktuellen Daten. Mehr Informationen zu der Funktion hier.
3. Power Query Abfrage auf Websteite/API
Via Power Query kann man eine Webabfrage erstellen und somit z.B. Daten aus einer HTML-Quelle oder auch von einer API-Schnittstelle in Excel laden. Solche Abfragen per Power Query sind jedoch leider relativ unzuverlässig, da die Webseiten beim Zugriff oft erst nach und nach geladen werden. Das führt dazu, dass die Abfragen nicht durchlaufen oder nur einen Teil der Daten ziehen.
Hier ein Beispiel für eine Webabfrage auf folgende URL:
https://www.tradingview.com/markets/cryptocurrencies/prices-all/
Daten -> Daten abrufen -> Aus dem Web
Via Power Query kann man eine Webabfrage erstellen und somit z.B. Daten aus einer HTML-Quelle oder auch von einer API-Schnittstelle in Excel laden. Solche Abfragen per Power Query sind jedoch leider relativ unzuverlässig, da die Webseiten beim Zugriff oft erst nach und nach geladen werden. Das führt dazu, dass die Abfragen nicht durchlaufen oder nur einen Teil der Daten ziehen.
Hier ein Beispiel für eine Webabfrage auf folgende URL:
https://www.tradingview.com/markets/cryptocurrencies/prices-all/
Daten -> Daten abrufen -> Aus dem Web
Oft muss das Abfrageergebnis noch in Power Query bereinigt werden. D.h. zuerst sollte man alle unnötige Spalten entfernen. Anschließend mit Werte ersetzen bei amerikanischen Schreibweise Punkte durch Komma ersetzen und auf gleiche Weise müssen dann auch Text wie "USD", "B", "M" usw. entfernt werden bevor man den Spaltentyp dann auf Dezimalzahl stellen kann.
Hier in dem Beispiel sind wir auf die Top 100 Kryptowährungen beschränkt und die erste Spalte mit der Bezeichnung bereitet uns Probleme da hier das Kürzel und der Name zusammen als ein Eintrag ausgegeben werden. Daher empfiehlt sich eine direkte Abfrage einer WEB-API z.B. der von Coingecko.
Dies läuft auf gleiche weise, jedoch muss man sich vorher noch die Abfrage-URL zusammenbauen. Dazu mehr auf https://www.coingecko.com/en/api/documentation
Hier noch eine Beispielabfrage auf https://www.livecoinwatch.com.
Den API-Key erhältst Du nach der Anmeldung unter https://www.livecoinwatch.com/tools/api.
Bei Abfrage -> Aus andere Quelle -> Leere Abfrage und dann im Power Query Editor unter Ansicht -> erweiterter Editor und dann folgenden M-Code reinkopieren. Dann noch den API-Key von livecoinwatch eingeben und bei Limit einstellen für wie viele Coins die Daten abgefragt werden sollen. Hier wären es die Top 1000 coins nach Marketcap.
let
url = "https://api.livecoinwatch.com/coins/list",
headers = [#"Content-Type" = "application/json", #"x-api-key" = "API-Key eingeben"],
postData = [#"currency" = "USD", #"sort" = "rank", #"order" = "ascending", #"offset" = 0, #"limit" = 1000, #"meta" = false],
response = Web.Contents(
url,
[
Headers = headers,
Content = Json.FromValue(postData)
]
),
jsonResponse = Json.Document(response),
#"In Tabelle konvertiert" = Table.FromList(jsonResponse, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Erweiterte Column1" = Table.ExpandRecordColumn(#"In Tabelle konvertiert", "Column1", {"code", "rate", "volume", "cap", "delta"}, {"code", "rate", "volume", "cap", "delta"}),
#"Erweiterte delta" = Table.ExpandRecordColumn(#"Erweiterte Column1", "delta", {"hour", "day", "week", "month", "quarter", "year"}, {"hour", "day", "week", "month", "quarter", "year"}),
#"Ersetzter Wert" = Table.ReplaceValue(#"Erweiterte delta","_","",Replacer.ReplaceText,{"code"}),
Subtraktionsspalte = Table.TransformColumns(#"Ersetzter Wert", {{"hour", each _ - 1, type number}}),
Subtraktionsspalte1 = Table.TransformColumns(Subtraktionsspalte, {{"day", each _ - 1, type number}}),
Subtraktionsspalte2 = Table.TransformColumns(Subtraktionsspalte1, {{"week", each _ - 1, type number}}),
Subtraktionsspalte3 = Table.TransformColumns(Subtraktionsspalte2, {{"month", each _ - 1, type number}}),
Subtraktionsspalte4 = Table.TransformColumns(Subtraktionsspalte3, {{"quarter", each _ - 1, type number}}),
Subtraktionsspalte5 = Table.TransformColumns(Subtraktionsspalte4, {{"year", each _ - 1, type number}})
in
Subtraktionsspalte5
4. Office Script Abfrage auf API
Im diesem Abschnitt schauen wir uns an, wie wir Office Script für einen API Abruf auf die API von https://www.livecoinwatch.com/ verwenden können. Der Vorteil hier ist, dass wir nicht auf die TOP 100 Kryptowährungen begrenzt sind und das resultierende Script auch an anderer Stelle von Kollegen verwendet werden kann.
1) Zuerst erstelle dir auf https://www.livecoinwatch.com/tools/api einen API-Key und nutze dann folgenden Code für dein Skript. XXXXXXXXXXXXX muss durch deinen API-Key ersetzt werden.
Automatisieren -> Neues Skript
type APIResponseType = {
code: string,
rate: number,
volume: number,
cap: number,
delta: {
hour: number,
day: number,
week: number,
month: number,
quarter: number,
year: number
}
}
async function main(workbook: ExcelScript.Workbook) {
let currentSheet = workbook.getActiveWorksheet();
const response = await fetch("https://api.livecoinwatch.com/coins/list", {
method: "POST",
headers: new Headers({
"content-type": "application/json",
"x-api-key": "XXXXXXXXXXXXX",
}),
body: JSON.stringify({
currency: "USD",
sort: "rank",
order: "ascending",
offset: 0,
limit: 1000,
meta: false,
}),
});
const result: string = await response.json()
const stringifiedJson = JSON.stringify(result)
const data: APIResponseType[] = JSON.parse(stringifiedJson);
let dataCount: number = data.length
let headers = [["Code", "Cap", "Volume", "Rate", "Day"]];
let headerRange = currentSheet.getRange("A1:E1");
headerRange.setValues(headers);
let dataToEnter = [[], []]
for (let i = 0; i < dataCount; i++) {
let currentDataPiece = data[i];
dataToEnter[i] = [currentDataPiece.code, currentDataPiece.cap, currentDataPiece.volume, currentDataPiece.rate, currentDataPiece.delta.day -1];
}
let dataRange = currentSheet.getRange("A2:E" + String(dataCount + 1));
dataRange.setValues(dataToEnter);
let selectedSheet = workbook.getActiveWorksheet();
selectedSheet.getRange("A:A").replaceAll("_", "", { completeMatch: false, matchCase: false });
}
2) Anschließend kannst Du noch ein Schaltfläche für das Skript anlegen.
3) Sobald Du auf die Schaltfläche klickst werden die Top 150 Kryptowährungen geladen und in die Spalten A bis E geschrieben. Du kannst die Anzahl der Währungen im Code anpassen. Dazu in Codezeile 31 nach limit: die gewünsche Anzahl eingeben.
4) Anschließend kannst Du die Kurspreise über den XVERWEIS, mit dem Symbol der Kryptowährung als Suchkriterium, in deinem Arbeitsblatt verbauen.