< návrat zpět

MS Excel


Téma: Vynásobit hodnoty kurzem - Power Query rss

Zaslal/a 11.4.2024 7:46

AlfanDobrý den,
mám dotaz.
V Dotazu "rate" mám vždy aktuální kurz, který modifikuji na listu "rate".
Chci se zeptat zda lze ten sloupec "cena" v Dotazu "zbozi" nějak automaticky vynásobit tím sloupcem "rate" bez toho, abych přidával nový sloupec?
Děkuji.

Příloha: zip56414_nasobeni-sloupcu-pq.zip (46kB, staženo 6x)
Zaslat odpověď >

Strana:  1 2   další »
#056415
avatar
např. funkce Table.TransformColumns:

// zbozi
let
Zdroj = Excel.CurrentWorkbook(){[Name="zbozi"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"název", type text}, {"czk", type number}}),
Rate = Table.TransformColumns(#"Změněný typ",{{"czk", each _ * rate, type number}})
in
Rate

// rate (vrátí hodnotu a ne tabulku)
let
Zdroj = Excel.CurrentWorkbook(){[Name="rate"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"rate", type number}}),
rate1 = #"Změněný typ"{0}[rate]
in
rate1
citovat
#056416
Alfan
Díkycitovat
#056485
Alfan
@lubo
tuhle část:
Rate = Table.TransformColumns(#"Nahrazená hodnota",{{"cena", each _ * rate, type number}})

Jak si mám nastavit PQ, aby když píši v rozšířeném editoru jsem mohl kromě sloupce "cena" namapovat i jiné sloupce a ty pak vynásobit?
Aby se mi prostě nabízely názvy sloupců.
A mohu do toho jednoho řádku vypsat všechny sloupce, které chci vynásobit?
Děkuji.citovat
#056488
elninoslov
InteliSense je síce zabugovaný jak sviňa, ale v tomto prípade to nemôže fungovať nijako. Vy tam potrebujete názvy stĺpcov písať ako text v úvodzovkách, a IS nemôže nijako vedieť, čo chcete napísať ako text do úvodzoviek. Rovnako napr. INDIRECT/NEPŘÍMÝ.ODKAZ, aj keď máte pomenovanú oblasť, tak keď ju píšete ako text v úvodzovkách, tak o tom IS netuší a neponúka ako v normálnom vzorci.

Budete to musieť asi iba takto doplniť:
= Table.TransformColumns(#"Změněný typ",{{"czk", each _ * rate, type number},{"czk2", each _ * rate, type number}})

Uvidíme, čo na to lubo.citovat
#056497
avatar
Jako vždy, je možností docela dost.
Pokud jse o to, aby bylo možné sloupce zadávat jednoduše,
nabízí se uložení jmen do seznamu, (zápisem , načtením z listu, ...).

Např.:
#"Jmena sloupců" = {"czk", "czk1", "czk3", "czk4", atd}

Jedno variantou je vytvořené seznamu parametrů pro Table.TransposeColumns pomocí funkce List.Transform:

var1 = Table.TransformColumns(Tabulka, List.Transform(#"Jmena sloupců", each {_, each _ * rate, type number})),


Totéž, ale snad srozumitelnější (první each je nahrazen explicitní deklarací funkce).

= Table.TransformColumns(Tabulka, List.Transform(#"Jmena sloupců", (s) => {s, each _ * rate, type number}))


Další možností je použití funkce Table.ReplaceValue, nahrazující funkci použijeme vlastní.

var2 = Table.ReplaceValue(Tabulka, 0, rate, (x,y,z) as number => x * z, #"Jmena sloupců")


Jsou i další možnosti (List.Accumulate např., ale to je tady málo efektivní)citovat
#056498
elninoslov
@lubo: Super. Mal by ste napísať knihu. Kúpim.

Škoda toho našepkávača InteliSense. Že to nefunguje ak sú názvy stĺpcov písané ako parametre string je logické, ale že to nefachá ani keď píšem notáciu [] v editovacom riadku ani v rozšírenom editore, je na prd. Ide to niekomu?citovat
#056500
Alfan
Mně to právě taky nejde.

Já myslel, že mohu dát to násobení pro vypsané sloupce do jedné závorky.

Knihu bych koupil.

Zatím mám 2 od Michala Chmelaře.citovat
#056877
Alfan
Prosím, může se ještě zeptat.
Ve sloupci "castka" mám hodnotu v CZK.
Ve sloupci "rate" mám příslušný kurz. Tato hodnota kurzu je v každém řádku jiná (podle) období.
Potřeboval bych poradit s jednoduchým zápisem tak, abych hodnotu ve sloupci "castka" prepsal novou hodnotu, která by byla "castka"/"rate.
děkuji.citovat
#056879
elninoslov
V tom vidím ale docela zásadný logický problém.
1. Aktualizujem PQ, dôjde k výpočtu
2. Čiastka bude nahradená výpočtom Čiastka / Rate
3. Po nejakom čase aktualizujem PQ znovu (napr. doplnenie nových riadkov, alebo iné)
4. A skáčem na bod 1., ale hlavne potom na bod 2. !!! Čiže bude už vypočítaná čiastka znovu vypočítavaná (už podelené bude znovu delené).citovat
#056880
avatar
Obecně bych tohle vše řešil přes datový model. Dvě tabulky:

V jedné datum a částka, a zřejmě ještě něco, ve druhé datum a rate.

k tomu kalendář. v Excelu se v datovém kodelu generuje automaticky na kliknutí.

Tabulky jsou spojeny relací s kalendářem přes datum.

Pak jednoduchá míra, které provede násobení částka * rate, případně výsledky sečte podle výběru a výstup přes kont.tabulku.

Nebo první tabulku z pq nahrát do listu a současně do datového modelu a primitivně počítaný sloupec částka * rate v datovém modelu. Sloupec se automaticky objeví v listu.citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje