aandelenkoersen updaten excel

Aandelenkoersen automatisch updaten in Excel

Wil je de waarde van je aandelen automatisch updaten in Excel? Dat kan eenvoudig via een tool die sinds Excel 2016 standaard ingebouwd zit, genaamd Power Query.

Als je Excel 2013 of ouder hebt, is dat geen probleem: je hoeft dan alleen de Power Query add-in te downloaden en te installeren.

In dit artikel wordt stap voor stap uitgelegd hoe je komt tot het eindresultaat.

AEX aandelen binnenhalen via Power Query

Als voorbeeld gaan we via Power Query de AEX aandelen ophalen vanaf de website IEX.nl.

  • Ga naar Gegevens –> Gegevens ophalen –> Van andere bronnen –> Lege Query. De Power Query Editor wordt nu gestart.
  • Klik op ‘Geavanceerde editor’
  • Je ziet nu een klein stukje code. Die kun je verwijderen en de onderstaande code toevoegen.
let
Bron = Web.Page(Web.Contents("https://www.iex.nl/Koersen/Aandelen.aspx")),
Data1 = Bron{1}[Data],
#"Type gewijzigd" = Table.TransformColumnTypes(Data1,{{"Instrument", type text}, {"Koers", type text}, {"Verschil | %", type text}, {"Hoog", type number}, {"Laag", type number}, {"Volume | Gem.", type text}, {"", type text}}),
#"Geëxtraheerde tekst vóór scheidingsteken" = Table.TransformColumns(#"Type gewijzigd", {{"Koers", each Text.BeforeDelimiter(_, " "), type text}}),
#"Kolommen verwijderd" = Table.RemoveColumns(#"Geëxtraheerde tekst vóór scheidingsteken",{"Verschil | %", "Hoog", "Laag", "Volume | Gem.", ""}),
#"Rijen gefilterd" = Table.SelectRows(#"Kolommen verwijderd", each [Instrument] <> "AEX")
in
#"Rijen gefilterd"
  • Klik op ‘Gereed’
  • Klik op ‘Sluiten en Laden’
  • Nu wordt de tabel met koersen in Excel geladen.

Tabel met koersen verversen

Je kunt deze tabel met aandelen elk gewenst moment verversen. Dit kan op twee manieren:

Methode 1: Ga naar ‘Data’ –> ‘Alles verversen’;
Methode 2: Klik op een willekeurige cel in je geïmporteerde tabel, kies vervolgens bovenin in het lint voor ‘Query’ en klik op ‘Vernieuwen’.

Tip: houd je brondata apart

Het advies is om je Power Query tabel in een apart tabblad te laden. Je krijgt dan twee tabbladen: een tabblad dat dient als input/bron en een tabblad met daarin de daadwerkelijke rapportage van bijvoorbeeld jouw aandelenportefeuille. Je kunt dan vanuit jouw rapportagetabblad verticaal zoeken naar de koers in de brontabel. Hierdoor behoud je overzicht. Bovendien moet je nooit teveel willen ‘rommelen’ in je brondata, zeker als deze voor verschillende tabbladen/tabellen als input wordt gebruikt.

Andere beleggingsproducten toevoegen

Stel dat je nou ook nog andere beleggingsproducten hebt, bijvoorbeeld Rabo Certificaten (die niet AEX genoteerd zijn), kun je die ook toevoegen. Het handigste is hiervoor dan een losse query te maken.

7 reacties

  1. Beste Bas,
    Ik ben in mijn zoektocht op jouw pagina beland en aan de slag gegaan met de query die je gemaakt hebt. Ik wilde echter de pagina met indices in Excel laden en heb dus wat aanpassingen gedaan in jouw code. Nu loop ik alleen aan tegen het probleem dat ik bij de koersen de absolute waarde niet gesplitst krijg van het percentage.
    Ik vroeg mij of jij misschien hier een korte blijk op kan werpen en de oplossing kan vinden. Wordt zeer gewaardeerd!

    Dit is mijn code:
    ———
    let
    Bron = Web.Page(Web.Contents(“https://www.iex.nl/Koersen/Indices.aspx”)),
    Data1 = Bron{1}[Data],
    #”Type gewijzigd” = Table.TransformColumnTypes(Data1,{{“Instrument”, type text}, {“Koers”, type text}, {“Verschil | %”, type text}, {“Hoog”, type number}, {“Laag”, type number}, {“”, type text}}),
    #”Geëxtraheerde tekst vóór scheidingsteken” = Table.TransformColumns(#”Type gewijzigd”, {{“Koers”, each Text.BeforeDelimiter(_, ” “), type text}}),
    #”Geëxtraheerde tekst vóór scheidingsteken1″ = Table.TransformColumns(#”Geëxtraheerde tekst vóór scheidingsteken”, {{“Verschil | %”, each Text.BeforeDelimiter(_, ” “), type text}})
    in
    #”Geëxtraheerde tekst vóór scheidingsteken1”
    ——-

    Ik hoor het graag van je als je de oplossing hebt!
    Diederik

        1. Hoi John,

          Dit is de query voor AMX:

          let
          Source = Web.Page(Web.Contents(“https://www.iex.nl/Koersen/Europa_Lokale_Beurzen/Amsterdam/AMX.aspx”)),
          Data1 = Source{1}[Data],
          #”Changed Type” = Table.TransformColumnTypes(Data1,{{“Instrument”, type text}, {“Koers”, type text}, {“Verschil | %”, type text}, {“Hoog”, type number}, {“Laag”, type number}, {“Volume | Gem.”, type text}, {“”, type text}}),
          #”Removed Top Rows” = Table.Skip(#”Changed Type”,1),
          #”Removed Columns” = Table.RemoveColumns(#”Removed Top Rows”,{“Verschil | %”, “Hoog”, “Laag”, “Volume | Gem.”, “”}),
          #”Extracted Text Before Delimiter” = Table.TransformColumns(#”Removed Columns”, {{“Koers”, each Text.BeforeDelimiter(_, ” “), type text}})
          in
          #”Extracted Text Before Delimiter”

          Dit is de query voor AScX:
          let
          Source = Web.Page(Web.Contents(“https://www.iex.nl/Koersen/Europa_Lokale_Beurzen/Amsterdam/AScX.aspx”)),
          Data1 = Source{1}[Data],
          #”Changed Type” = Table.TransformColumnTypes(Data1,{{“Instrument”, type text}, {“Koers”, type text}, {“Verschil | %”, type text}, {“Hoog”, type number}, {“Laag”, type number}, {“Volume | Gem.”, type text}, {“”, type text}}),
          #”Removed Top Rows” = Table.Skip(#”Changed Type”,1),
          #”Removed Columns” = Table.RemoveColumns(#”Removed Top Rows”,{“Verschil | %”, “Hoog”, “Laag”, “Volume | Gem.”, “”}),
          #”Extracted Text Before Delimiter” = Table.TransformColumns(#”Removed Columns”, {{“Koers”, each Text.BeforeDelimiter(_, ” “), type text}})
          in
          #”Extracted Text Before Delimiter”

          Maar dit kan je zelf ook heel eenvoudig doen als je dat andere artikel goed doorneemt.

          Succes en fijne avond.

          1. Hallo,

            ik krijg steeds bij beide een foutmelding:
            Expression.SyntaxError: Ongeldige id.
            Weet jij hoe dit op te lossen is?

          2. Hoi John, welk besturingssysteem gebruik je, Windows 10? En welke Excel versie?

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.