Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  17 18 19 20 21 22 23 24 25   další » ... 37

Můžete mrknout na alternativní řešení skládání sloupců do řádků.
Kód je o něco kompaktnější, možná pro začátečníka trochu obtížnější.


// Transform File from Data
let
Zdroj = (#"Sample File Parameter1" as binary) => let
Source = Table.FromColumns({Lines.FromBinary(#"Sample File Parameter1", null, null, 1250)}),
#"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith([Column1], "Období:")),
Year = Text.End(Text.Trim(#"Filtered Rows"{0}[Column1]),5),
Vlastní1 = Source,
#"Doplněn Dat.zaúčt" = Table.TransformColumns(Vlastní1,
{
{"Column1",
each try "Dat.zaúčt: " & Text.From(Date.FromText(Text.Start(_, 6) & Year)) otherwise _,
type text}}),
#"Rozdělit sloupec oddělovačem" = Table.SplitColumn(#"Doplněn Dat.zaúčt", "Column1", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Pole", "Data"}),
#"Filtrované řádky" = Table.SelectRows(#"Rozdělit sloupec oddělovačem", each ([Pole] = "Dat.zaúčt" or [Pole] = "Místo" or [Pole] = "Částka")),
#"Přidané: Index" = Table.AddIndexColumn(#"Filtrované řádky", "Index", 0, 1),
#"Nahrazená hodnota" = Table.ReplaceValue(#"Přidané: Index",
each [Index],
each if [Pole] = "Místo" then [Index] -1
else if [Pole] = "Částka" then [Index] -2
else [Index],
Replacer.ReplaceValue,{"Index"}),
#"Převedený sloupec" = Table.Pivot(#"Nahrazená hodnota", List.Distinct(#"Nahrazená hodnota"[Pole]), "Pole", "Data"),
#"Filtrované řádky1" = Table.SelectRows(#"Převedený sloupec", each ([Místo] <> null)),
#"Rozdělit sloupec oddělovačem1" = Table.SplitColumn(#"Filtrované řádky1", "Částka", Splitter.SplitTextByDelimiter("CZK", QuoteStyle.Csv), {"Částka", "Dat. platby"}),
#"Změněný typ - Částka" = Table.TransformColumnTypes(#"Rozdělit sloupec oddělovačem1",{{"Částka", Currency.Type}}, "en-US"),
#"Změněný typ - Datum" = Table.TransformColumnTypes(#"Změněný typ - Částka",{{"Dat.zaúčt", type date}, {"Dat. platby", type date}}),
#"Odebrané sloupce" = Table.RemoveColumns(#"Změněný typ - Datum",{"Index"})
in
#"Odebrané sloupce"
in
Zdroj

Taky to moc nechápu, Pokud jsou neprázdné buňky vyplněné konstatnou, zkuste něco takového

=SUMA(POSUN($A$4:$B$4;SUMA(--ISFORMULA($E$1:E2));0))
(maticově)

Pokud ne tak můžete zkusit FORMULATEXT, a testovat počet výskytů vzorce.

Tj. pokud chápu doatz, tak to jde.

Sice nechápu smysl, ala maticově to jde takto:

=SUMA(SUMIF($B$6:$B$13; ZVOLIT({1\2};$E$9:$E$11;$G$9:$G$10); $C$6:$C$13))

V $E$9:$E$11 je první seznam, v $G$9:$G$10 druhý.

Případně

=SUMA(SUMIF($B$6:$B$13; $E$9:$F$11; $C$6:$C$13))
Ve sloupci E je původní seznam, ve sloupci F doplňující.

=SUMA(SUMIF($B$6:$B$13; E6:E13; $C$6:$C$13))

V oblasti E6:E13 si vyplňte písmenka.
Vzorec uložte maticově (CSE).

Totéž bez matice:
=SOUČIN.SKALÁRNÍ(SUMIF($B$6:$B$13; E6:E13; $C$6:$C$13))

Tj. výčet se definuje operátorem ":"

Všimněte si, že oblast nemusí být vyplněná.
Pokud potřebujete proměnnou oblast, tak si ji spočtěte vzorcem nebo prostě pro tato data vytvořte tabulku a odkazujte se na sloupec tabulky.

Protože toto řešení uvádíte, nechápu o jaký problém jde. Pokud to chápu potřebujete na volné místo seznamu nebo dynamicky do tabulky připsat dočasně další jméno?

Už od pravěku is "umí" poskytovat data v textových sestavách. Sežeňte si tu správnou načtěte, pokud tam budou lomítka, tak použijte pover query.

Je třeba vyřešit stav, kdy je kniha půjčena v různé době různým čtenářům.

Asi nejjednodušší řešení je do tabulky výpůjšky přidat sloupec a poslední záznam pro každou knihu označit.

Poslední záznam=vypozicky[Dátum požičania]=CALCULATE(MAX(vypozicky[Dátum požičania]);FILTER(vypozicky;vypozicky[Číslo knihy]=EARLIER(vypozicky[Číslo knihy])))

(předpokládám, že kniha je v jednom dni půjčena jednou)

Hodí se přidat míry:

Naposledy výpůjčeno:=MAX(vypozicky[Dátum požičania])

Bude vráceno:=IF(HASONEVALUE(vypozicky[Stav]);IF(VALUES(vypozicky[Stav])="Požičaná";MAX(vypozicky[Lehota]);BLANK());BLANK())

(Lze zapsat v kratší podobě, nevím, jakou máte verzi)

Pak vyberte knihy, do filtru pole dejte přidané pole
Poslední záznam,

do hodnot dejte míry Naposledy výpůjčeno, případně Bude vráceno

do řádků přidejte stav + info o čtenáři.

Na toto se powerpivot moc nehodí.

Pokud to chcete z nějakého důvodu použít, pak základní tabulkou je seznam knih nebo seznam čtenářů. Tabulka výpůjčky tyto tabulky spojuje.

Zvolte jednu podle preferencí a dopočtěte potřebné sloupce.
Na jejich základě vytvoříte potřebnou tabulku. (Fakticky je efektivnější použití power query).

Použití měr (kpi) nedoporučuji, jsou v tomto případě dost pomalé.

No.

Najde a spustí všechny dotazy. Nedívá se, jestli doběhnou, pokud je nastavena aktualizace na dotazu pozadí, spustí se a hned se spouští další. Pokud je tam KT tak se po doběhnutí musí zpravidla spustit aktualizace KT znovu (kým?)

Vhodné je nejprve vypnout nastavení běhu na pozadí, případně obnovovat s parametrem (první variantě dávám přednost). Po doběhnutí chvíli počkám, doevents tady nefunguje. V případě chyby také chvíli počkám a pak dotaz zopakuji, samozřejmě jen několikrát.

Obecně je lepší spouštět dotazy explicitně. Pokud tam jsou závislé dotazy, tak spouštím jen ty finální. Jejich předchůdci se spustí automaticky pokaždé, když jsou použity bez ohledu a čas posledního spuštění (doufám, že to MS někdy opraví). Je tedy ztrátou času je spouštět samostatně, pokud současně negenerují samostatný výstup.

Log zapnu:
Data, Načíst data, možnosti dotazu, globální, diagnostika, Povolit trasování.

Na log se dostaneme tamtéž, otevřít složku výpisu stavu systému.

Není to moc uživatelsky přívětivé.
Na internetu se dají najít funkce k načtení logu, co jsem viděl, je podle mne základ.

Mrkni také na funkce Diagnostics.ActivityId a Diagnostics.Trace.

Řeším automatické zpracování.
Jeden problém je se synchronizací, když uvedený dotaz doběhne, tak často stále běží výpočet, tj. BackgroundQuery:=False je podmínka nutná ale ne postačující. Je nutné správně nastavit všechny dotazy, protože se, občas nepochopitelně, spouští. Navíc běží opakovaně a paralelně, je to vidět v logu.
Pokud na to navazuje KT je o problém více (KT se někdy přepočte dříve než dostane data)
Kromě toho při spouštění z vba dotaz častěji nedoběhne (pocitově, "ruční" aktualizace je OK, start z vba KO).
Minimálně on error při jednom dotazu v sešitu, při více dotazech v sešitu po doběhnutí dotazu počkám a při chybě několikrát opakuji výpočet.

AL napsal/a:

..., po kliku do bunky by sa spustil dotaz v PowerQuery. ...

Spolehlivé spouštění PQ z VBA úplně jednoduché není. Jsou to dva rozdílné světy. Tý zkušenosti to chce docela dost.

mepexg napsal/a:

lubo napsal/a:... lze použít vhodnější sumifs. Tak sem s ním.

Kde bude rok?

Jinak, na to je posun, případně, pokud by se inteligentně upravila hlavička tabulky = obsahuje datum, lze použít vhodnější sumifs.

Pro hromadné zadávání unifikovaných čísel je v excelu mód:

Soubor, možnosti, upřesnit, automaticky vkládat desetinou čárku

Není to moc praktické, nicméně, vkládají se čísla bez desetinné čárky.

Pokud se desetinná čárka vkládá, tak nechápu, proč se nevloží na rovnou na správném místě. Pokud jde o opis hromady čísel, lze je jistě vkládat v samostatném bloku, přepočítat a zkopírovat.

Změna hodnoty pod rukou není nápad, který bych doporučil.

Mimochodemm, napsat fungující makro není snadné, jak je vidět na uvedených ukázkách. Ani jedno nefunguje spolehlivě.

Tomas1986 napsal/a:

jj.. to mě taky napadlo.. Ale to k nicemu nevede.. uzivatel by mel zadat vstupni data do krasneho vizualniho formulare a ne nekde bokem do tabulky kteera je napojena na ten formular... :-( Asi to jinak nez pres makro nejde vyresit..


Tak si vyrobte formulář...


Strana:  1 ... « předchozí  17 18 19 20 21 22 23 24 25   další » ... 37

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse