Salkkujen seuranta: excel-taulukot

Errorin varalle on olemassa omakin syntaksinsa:

=iferror((J7/K7*100),0)
1 tykkäys

Mitenköhän saisi Mandatum Lifen rahastoarvot Google sheetsiin jostain muualta kuin Yahoo Financesta tai Morningstarista?

Yahoo Financesta data tulee useamman päivän viiveellä ja Morningstar on alkanut pätkimään ja tuloksena in N/A, joka estää skriptiä toimimasta.

Kurssit löytyy täältä, mutta en keksinyt tapaa lukea niitä Sheesiin:

Osaisiko esim. @Prophier auttaa?

Ei toimi ainakaan tällä. Valittaa kaavan jäsennysvirhettä ja lykkää errorin ruutuun.

Käytä argumenttierottimena puolipistettä eikä pilkkua

=IFERROR(A2/B2;0)

3 tykkäystä

Tällä pelaa mallikkaasti. Kiitoksia!

1 tykkäys

Näköjään oli siten hankalasti toteutettu sivu, että sheetsin importhtml-funktiolla ei tullut saalista. Tällä pätkällä tulee kaikki mandatumin tuotteet, siitä voi vaikka index()-funktiolla poimia mitä haluaa.

Eli käy laittamassa koodi sheetsin koodieditorin puolelle ja käytä taulukossa =mandatum() -funktiota. Tuo sitten latautuu pirun hitaasti, eli älä menetä toivoa kesken kaiken.

function mandatum() {
  const content = UrlFetchApp.fetch("https://www.mandatumlife.fi/sijoituskohteet/").getContentText();
  const contentArr = (content.split("investmentgraph v-bind:model")[1]).split("{"name":"");
  contentArr.shift();

  const resultArr = [["name", "date" , "value"]];
  contentArr.forEach(element => {
    const name = element.split("","minRating")[0];
    const date = (element.split("{"ratingDate":"")[1]).split("","price"")[0];
    const price = (element.split("","price":")[1]).split(","changePercentage1Month"")[0];
    resultArr.push([name, date, price]);
  });

  return(resultArr);
}
8 tykkäystä

Oot sinä kyllä mestari! :star_struck: Kiitos! Mäkin yritin ensin importhtml ja importxml -funktioita, mutta niillä tosiaan tuli vain N/A:ta.

Mulla tuo taulukko latautui nopeasti. En vain keksinyt vielä, että miten tuo index-funktio toimii tässä. Omaan taulukkoon pitää saada muutettua vielä desimaalipiste desimaalipilkuksi. Saahan sen toki value ja substitute -toiminnoilla, mutta jonkinverran lisäaskartelua tuossa vielä on. Kehtaako kysyä että olisitko tuon vielä jaksanut askarrella? Allokaatio Osake+ siis on se tarvitsemani rahasto :grimacing:

Siis ihan huikeeta, @Prophier ! Tuo toimii kuin unelma! Itse yritin laittaa tuon solun sijainnin väärään kohtaan kaavaa niin siksi ei tietenkään toiminut.

1 tykkäys

Eipä mitään! Pilkkuhommia varten loppupuolelta voi muuttaa tuon yhden rivin muotoon

resultArr.push([name, date, price.replace(/\./g, ",")]);

Index ottaa vastaan attribuutteina (data, rivi, sarake), eli tarvitsemasi taitaa olla jompi kumpi näistä

=index(mandatum(),21,)
=index(mandatum(),21, 3)
1 tykkäys

Mikähän tässä mättää, kun haen tuolla yllä olevilla työkaluilla google sheetsiin yahoo financen ex dividend datet ja kun otat sivun exceliin, kaikki muut laskentataulukoan sisällöt tulevat kunnolla, mutta tuo yahoon data ei. Saan soluihin vain virheilmoitusta #Nimi?

Näin ei ollut vielä hetki sitten ja sheetsin puolella päivämäärä näkyy oikein. Se ei vain tule läpi exceliin asti.

Koodi yahoon ex-dividendiin on: else if (mode === “divdate”) return summaryArr[14].split(“Date”)[1] || “N/A”;

Ideoita?

No nyt pääsin vähän jäljille, eli sain tuosta sentään jotain tulemaan läpi. Ongelma on tuon skriptillä generoidun solun arvon muodossa, jota excel ei hae oikein. Jos kopioin pelkät arvot noista ex dividend dateista toiseen sarakkeeseen, ne tulevat läpi oikein. Tämä vaatii kuitenkin manuaalista työtä. Millähän saisin skriptin tuottaman netistä poimitun yahoon datan standardiksi google sheets tekstiksi, jotta se tulee oikein läpi?

Ja minkä ihmeen takia se ei enää tule oikein läpi, kun se on tullut oikein läpi varmaan vuoden… grrrr.

Käytä tuota ketjussa olevaa @Prophier in kirjoittamaa koodia ja sitten laita haluamaasi soluun yhtiön tikkeri Yahoo Financessa, eli esim.

=YahooFinance("EQV1V.HE"; "divdate")

Joissakin kieliversioissa käytetään puolipisteen sijasta pilkkua.

Eikun niin, haluat sen siirtyvän vielä Exceliin?

Tarvitsetko välttämättä Exceliä jos voit tehdä kaiken saman Google Sheetsillä?

Mistä löytyisi OMX Helsinki PI kurssihistoria niin että luvut saisi ladattua Excel-taulukkoon? Poika tekee lopputyötä ja ihmetellään tässä mistä tiedot saisi kätevimmin.

1 tykkäys

Kiitos paljon avusta Sfinski, nyt saatiin luvut Exceliin!

Tervehdys!

Millä saisin haettua Google Sheetsiin osakkeen hinnan, kun tuolla alla olevalla funktiolla ei löydy esimerkiksi Sievi Capitalille kurssia?

=IFERROR(GOOGLEFINANCE(“HEL:SIEVI”,“price”),“No Data”)

1 tykkäys

Kokeilin ensimmäistä kertaa räpeltää jonkun youtube ohjeen mukaisesti excel-kaaviota sijoituksille. Törmäsin kuitenkin muutaman ulkomaisen osakkeen kohdalla ongelmaan sillä excel hakee näillä tietenkin valuaatiot eri valuutassa. Saakohan näitä jotenkin kätevästi muutettua euron kurssin mukaiseksi?

Valuuttakurssit saa myös haettua jollain automaagisella datahaulla, itse ainakin ratkaisin tämän hakemalla ne itse toiselle välilehdelle ja tein käännöksen euroiksi sitten itse jonkin XLOOKUP-hässäkän kanssa.

1 tykkäys

Käytän Google sheetsiä, mutta excel saattaa toimia samalla tavalla.
Minulla on yhdessä paikassa siellä reunassa solu joka hakee eur/usd valuuttakurssin oheisella käskyllä:
=GOOGLEFINANCE(“CURRENCY:USDEUR”)

Sitten laitan sen solun viereen joka hakee osakkeen usd-arvon niin viereiseen soluun käskyn jakaa (tai kertoa riippuu miten päin valuttakurssit haet) usd-hinta solulla, joka hakee eur/usd valuuttakurssin.

Näin sinulla on vierekkäisissä soluissa sekä USD, että EUR arvo osakkeelle.

Excelissä on komento Data, Stocks (Tiedot, Osakkeet), jolla saa kurssit linkitettyä Excel-taulukkoon.

Ja vastaavasti Data, Currency (Tiedot, Valuutat), jolla saa valuuttakurssit.

Siiten vaan tosiaan XLOOKUP tai VLOOKUP, jolla valuuttakurssi haetaan osakekurssin rinnalle.

Kun on kerran tehnyt nuo niin sitten toimii automaattisesti siitä eteenpäin.

Googlesheetti on hemmetin kova… ja en sano että omistaisin tällaisia katastrofiosakkeita mutta jostain hiton syystä kohta ainakin viikon verran Tecnotree ei palauta arvoa. Ei logiikkaa, mutta on vain lakannut toimimasta.

Yksinkertaistettuna:
=GOOGLEFINANCE(“HEL:TEM1V”) ei palauta mitään

Firma kuitenkin näyttää vielä toistaiseksi olevan olemassa :man_shrugging:

Tässä ärsyttää se kun portfoliossani on seurantapositio Tecnotreessä, ja kun taulukkoni ei saa laskettua tälle arvoa niin koko portfolion kokonaisarvolaskelma periaatteessa pettää :pensive: