Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  10 11 12 13 14 15 16 17 18   další » ... 37

Ten eralier pomalý není, jen 2000000x prohledáváš 2000000 x 3 položek. To chvíli trvá.

Možnosti:
a) skladovat v jednom sloupci datum a čas není zpravidla dobrý nápad. => rozděl datum a čas do různých sloupců, např. den a čas. Lépe se to zpracovává a ušetří se dost místa.

b) Pokud to máš rozdělené, vyrob tabulku kalendářních dat.
Můžeš automaticky, to ale vyrobí data od roku 01.01.1899. Pro začátek to stačí. Propoj relací den volání a date v generované tabulce.

Můžeš psát vzorečky. Ve vzorečku ponechávám generované názvy tabulky kalendářních dat.

Dopočítaný sloupec stejně nebude žádná sláva.
Neřeším více volání ve stejný den.

Var 1:
=CALCULATE(
COUNTA('Tabuľka1'[Value]); all('Tabuľka1');
'Tabuľka1'[Value]=earlier('Tabuľka1'[Value]);
DATESINPERIOD('Kalendář'[Date];'Tabuľka1'[Den];3;DAY))


Vzorec v tabulce vybírá řádky s datumem od data v řádku + 3 dny. tento výběr využívá relaci, je tedy o dost rychlejší než prohledání celé původní tabulky.

Počítá všechny výskyty, tj. opakování je, pokud výsledek je > 1.

Var 2:
=
var val = 'Tabuľka1'[Value] // místo earlier.. si zapamatuje co hledat
return
CALCULATE(
//--- vnitřní filtr - má vybrané řádky s datem, prohledá je a spočte počet výskytů
CALCULATE(
COUNTA('Tabuľka1'[Value]);
'Tabuľka1'[Value]=val
);
//--- Vnější filtr - pomocí relace vybere řádky s potřebným datem
all('Tabuľka1');
DATESINPERIOD('Kalendář'[Date];'Tabuľka1'[Den];3;DAY)
)


Pokud se by se počítaly i opakované hovory během dne budou výrazy trochu složitější. Základ je stejný + spočetly by se hovory během dne a pokud by jich bylo více než 1, tak by se zjistilo, kolik jich následuje.

Ps. Náhled na to, jak se vzorec zpracovává, poskytne DAX Studio

Mám problém, jak sem dostat soubor, tak aspoň nástřel postupu.

Řeší se to v datovém modelu. Podívejte se na schema modelu "hvězda" ("star"). Tady to není čistá hvězda, ale funguje to.

Příprava dat.

Data jsou fakta a dimenze. Tady jsem odvodil dimenze "LineName", "Vady". PQ kód následuje. Mělo by stačit ctrl-c, ctrl-v.

// Data_pro_gravy_množství_vyrobených__3
let
Zdroj = Excel.CurrentWorkbook(){[Name="Data_pro_gravy_množství_vyrobených__3"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"Line_name", type text}, {"Date", type datetime}, {"Year", Int64.Type}, {"CW", Int64.Type}, {"Produced_quantity", Int64.Type}})
in
#"Změněný typ"

// LineName
let
Zdroj = Excel.CurrentWorkbook(){[Name="Data_pro_gravy_množství_vyrobených__3"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"Line_name", type text}, {"Date", type datetime}, {"Year", Int64.Type}, {"CW", Int64.Type}, {"Produced_quantity", Int64.Type}}),
#"Odebrané ostatní sloupce" = Table.SelectColumns(#"Změněný typ",{"Line_name"}),
#"Odebrané duplicitní položky" = Table.Distinct(#"Odebrané ostatní sloupce"),
#"Seřazené řádky" = Table.Sort(#"Odebrané duplicitní položky",{{"Line_name", Order.Ascending}})
in
#"Seřazené řádky"

// Data_pro_grafy_zmetky_2021__7
let
Zdroj = Excel.CurrentWorkbook(){[Name="Data_pro_grafy_zmetky_2021__7"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"Datum", type datetime}, {"MNOZSTVI", Int64.Type}, {"Typ vady", Int64.Type}, {"Vada", type text}, {"LINKA", type text}, {"týden", type text}, {"Četnost", Int64.Type}, {"kumulovaný výsykt %", Int64.Type}})
in
#"Změněný typ"

// Vady
let
Zdroj = Excel.CurrentWorkbook(){[Name="Data_pro_grafy_zmetky_2021__7"]}[Content],
#"Změněný typ" = Table.TransformColumnTypes(Zdroj,{{"Datum", type datetime}, {"MNOZSTVI", Int64.Type}, {"Typ vady", Int64.Type}, {"Vada", type text}, {"LINKA", type text}, {"týden", type text}, {"Četnost", Int64.Type}, {"kumulovaný výsykt %", Int64.Type}}),
#"Odebrané ostatní sloupce" = Table.SelectColumns(#"Změněný typ",{"Typ vady", "Vada"}),
#"Odebrané duplicitní položky" = Table.Distinct(#"Odebrané ostatní sloupce", {"Typ vady"})
in
#"Odebrané duplicitní položky"


Data se načtou do datového modelu.

Pak tam máte kalendář. Nejrychlejší je v datovém modelu zvolit návrh/tabulka kalendářních dat/nová tabulka.

V datech máte týdny, tak klik na přidat sloupec a vzorec je =WEEKNUM('Calendar'[Date])

Dále v návrhu/zobrazit diagram a propojit rámečky - stačí tahat myší - datumy do kalendáře, linky do LineName, vady (pokud budou třeba...)

Vyrobí se míry:

Klik na sloupec Produced_quantity, v návrhu klik na autosum a dostanete míru:

Sum of Produced_quantity:=SUM([Produced_quantity])

Obdobně dostanete ve druhé tabulce

Sum of MNOZSTVI:=SUM([MNOZSTVI])

No a podíl:

Kliknete někam do volného prostoru pod tabulkou a napíšete

b3b16:=divide( [Sum of MNOZSTVI]; [Sum of Produced_quantity]) * 1000000


Stačí začít psát, tím skočíte do řádku vzorců. Když zadáte "[", program nabídne připravené míry.

A pak už na listu vložíte kont. tabulku.
Pamatujte. VŽDY do hlavičky sloupců a řádků dávejte položky z dimenzí, jinak to bude počítat podivně.

Takže je to formát "rdm". To nějak zaniklo.

Takže buď Změnit typ, vybrat "použití národního prostředí".

Tam nastavit datum a vybrat zemi, kde se tento formát zápisu data používá.

Nebo klikání nestačí a pak krátký kód, např:

= Table.TransformColumns(Zdroj,{{"dat", each let d = Splitter.SplitTextByLengths({4,2,2})(Text.From(_)) in Date.FromText(d{0} & d{2} & d{1}), type date }})


zamění číslo za datum ve sloupci dat.

ondrejmalik napsal/a:

... myslel jsem že půjde nějak v power query, ale daný sloupec nelze předělat jako datum. ...


Nesuďte ukvapeně.

Pravý klik na hlavičku sloupce, v seznamu vybrat "Změnit typ" a v dalším seznamu klik na datum.

Hotovo.

Tak proč to nerozdělíte???

Klik na "rozdělit sloupec", vybrat oddělovač, a v upřesnění vybrat "do řádků".

(4 kliky)

veny napsal/a:

Je pravda že nad dlouhým textem jsem nepřemýšlel.
No šlo by to tedy takto.Příloha: 49509_vyhledani_cisla_text.xlsx (18kB, staženo 4x)


To by nešlo. Pokud nebudou mezi čísly mezery, tak se čísla spojí.

Možností je docela dost. Třeba:
#"Vybrat číslice" = Table.AddColumn(
Zdroj,
"Cisla",
each Text.Combine(
List.Transform(
Text.ToList([Sloupec1]),
(c) => if List.Contains({"0" .. "9"}, c) then c else " "
),
""
)
),
#"Rozdělit sloupec mezerou" = Table.TransformColumns(
#"Vybrat číslice",
{{"Cisla", each Splitter.SplitTextByWhitespace(QuoteStyle.Csv)(_)}}
),
#"Vybrat ean" = Table.TransformColumns(
#"Rozdělit sloupec mezerou",
{{"Cisla", each List.Select(_, each Text.Length(_) = 13)}}
),


nebo

#"Najít čísla" = Table.AddColumn(
Zdroj,
"cisla",
each List.Transform(
Splitter.SplitTextByCharacterTransition(
(c) => not List.Contains({"0" .. "9"}, c),
{"0" .. "9"}
)([Sloupec1]),
each Text.Select(_, {"0" .. "9"})
)
),
#"Vybrat ean" = Table.TransformColumns(
#"Najít čísla",
{{"cisla", each List.Select(_, each Text.Length(_) = 13)}}
),


Možné jsou i variace nalezení pozice číslic, převedení na range, ...

Proč nevyhovuje kontingenční tabulka?

Kromě seznamu, setřídění jsou tak hotovy i další statistiky (počet kol, ...)

Mrkni na soubor/účet/o produktu...

Je tam taky licence a build.
Tam můžeš ověřit, jak starou verzi excelu máte. (Některé firmy s upgradem nespěchají.)

Pokud se mají automaticky načíst data z mnoha sešitů, tak na to je powerquery.

john89 napsal/a:

john89 napsal/
Už jsem to vyřešil:

ActiveSheet.Protect "password"
ActiveSheet.UnProtect "password"


Nebo se dá použít

ActiveSheet.Protect Password:="heslo", UserInterfaceOnly:=True

před spuštěním aktualizace.

Do F2 vzorec:

=DATUMHODN(B2&" " &B1)

do g2:
=f2+1

atd.

(+ zvolit formát)

Funkce "vyhledat" pokud nehledají přesnou shodu vrací poslední hodnotu, která je rovna nebo menší než hledaná.
Pokud hledám číslo, zadám tedy co největší číslo k hledání. A protože si největší číslo v exelu přesně nepamatuji, tak dávám něco, co se k tomu blíží.

Pokud se tedy hledá např. poslední text, tak obvykle hledám "žžž" - ne moc dlouhý řetězec, aby se to neporovnávalo moc dlouho, který se při třídění zařadí nakonec seznamu.

Třeba:

=SVYHLEDAT(C6;ZVOLIT(B2;Prvni!A:R;Druhy!A:R;Treti!A:R);18;0)

V B2 je číslo listu (1,2,3, ...)

Jinak, pokud by stačilo =b1+b2, tak se to dá udělat:

Do
a1: "m", do b1: 4
a2: "k", do b2: 6


pak vybrat oblast a3:b3 a ve formátu sloučit buňky.
pak zkopírovat formát na a1:b1 a a2:b2
pak skrýt sloupec a

Pak se může napsat b1 + b2 a v buňkách bude "m" a "k".

Je to sice pitomost, ale kdo chce kam...

Když už se po novém roce teoretizuje, zkus popsat, jak po zapsání do buňky písmene "m", se excel doví, že při sčítání má použít číslo 6.

Jinak to můžeš zkusit na https://excel.uservoice.com/


Strana:  1 ... « předchozí  10 11 12 13 14 15 16 17 18   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

Jak odstraním duplicitní údaje

Mirek8 • 24.4. 8:00

Relativní cesta - zdroje Power Query

Alfan • 24.4. 7:44

Vyhledej

PavDD • 24.4. 7:28

Jak odstraním duplicitní údaje

elninoslov • 24.4. 6:43

Jak odstraním duplicitní údaje

Mirek8 • 24.4. 6:02

Relativní cesta - zdroje Power Query

elninoslov • 23.4. 19:33

Vyhledej

elninoslov • 23.4. 18:54