Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  13 14 15 16 17 18 19 20 21   další » ... 37

Proč to raději nenaklikáte?

Power Query.....

Vstupní data do tabulky, Vybrat: Data/Z tabulky nebo oblasti
V PQ - klik na první sloupec,
Rozdělit sloupec, oddělovačem, Upřesnit možnosti ... rozdělit do řádky.

Pravý klik na první sloupec, transformovat, ořízout.

Zavřít a načíst (vybrat kam).
HOTOVO

Příště pravý klik na dotaz, vybrat aktualizovat.

Vygenerovaný program vypadá takto:

let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabulka1"]}[Content],
#"Rozdělit sloupec oddělovačem" = Table.ExpandListColumn(Table.TransformColumns(Zdroj, {{"SL 1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "SL 1"),
#"Změněný typ1" = Table.TransformColumnTypes(#"Rozdělit sloupec oddělovačem",{{"SL 1", type text}}),
#"Oříznutý text" = Table.TransformColumns(#"Změněný typ1",{{"SL 1", Text.Trim, type text}})
in
#"Oříznutý text"

add zadání:

podmíněný formát nezabrání vložení chybného textu.
validace se dá snadno obejít pomocí ctrl C/... a uživatel to ani nemusí vědět.

add vzorce:
"Jiří497" - seznam zakázaných znaků - v excelu je používáno unicode -> ten seznam zakázaných znaků může být docela dlouhý

"vikizaj (alternativa)" - funkce hledat je ve vzorci chybná, klidně schválí znaky *~?, lepší je funkce najít. + chybí funkce pročistit.

ps. Nechápu rostoucí požadavky na řešení vzorcem. Pokud jde o použití vzorce v jiném programu nez je excel, je lepší se v těchto úlohách zamyslet, jestli cílový program nepodporuje regulární výrazy: google REGEXEXTRACT, LO calc je podporuje v běžných výrazech, ...
Pak je řešení podstatně jednodušší.

Hele, zkus taky číst, už jsem to napsal. Zkusím to tedy jinak.
Když máš vzorec pro pondělí, tak pátek dostaneš po přičtení 4:

=DATUM(2000 + ZPRAVA(A1;2);1;4) - DENTÝDNE(DATUM(2000 + ZPRAVA(A1;2);1;4);3) + (ZLEVA(A1;2)-1)*7 + 4

První den týdne dostanete:

=DATUM(rok;1;4) - DENTÝDNE(DATUM(rok;1;4);3) + (týden-1)*7


Na opravu "vzorce" si netroufám.

Použijte funkce maxifs, (minifs), ...

Golem napsal/a:



Jde mi o emulaci v jiném jazyku
Děkuji moc za účast. Hezký den


Potom by možná vhodné nahlédnout do specifikace:

https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/

Anglická verze vzorce se vkládá do formula. Kromě přeložených názvů funkcí musíte také nastavit oddělovače, případné texty u některých vzorců, ...

Pokud se nechcete unavovat překladem, stačí ve vba do formulalocal vložit českou verzi a ve formula najdete anglický překlad.

Jednoduše:
=KDYŽ(JE.ČISLO(A1);A1/10^(POZVYHLEDAT(0;MOD(A1;10^(ŘÁDEK(NEPŘÍMÝ.ODKAZ("A1:A4"))-1)))-1);"")
(maticově)

Použij funkci řádek() v podmíněném formátu. např:

=MOD(ŘÁDEK()-1;4) <2

a pro splněnou podmínku nastav pozadí

Něco takového:

=IFERROR(SVYHLEDAT(A2;A3:A3:$B$35;2;0);0)-B2

??

Máte pravdu, pracuji nyní v pbi, tak jsem to zkusil v něm a neověřil jsem funkčnost v excelu.

Zásadní problém to není, možností, jak dostat v případě potřeby data z pbi do excelu, je dost.

Načtení je jednoduché. Protože jsem tento import zatím nezkoušel, tak jsem se pobavil nad spojováním buněk záznamů. V kódu zůstaly zbytky po hledání společných řádků.

pq dotaz:
let
Zdroj = Pdf.Tables(File.Contents("C:\Temp\KNIHA.pdf")),
Table001 = Zdroj{[Id="Table001"]}[Data],
#"Záhlaví se zvýšenou úrovní" = Table.PromoteHeaders(Table001, [PromoteAllScalars=true]),
Data = Table.AddIndexColumn(#"Záhlaví se zvýšenou úrovní", "Index", 1, 1),
#"Spojovani radku" = Table.SelectColumns(Data,{"Dátum výjazdu", "Cesta", "Tachometer", "Index"}),
Heuristika = Table.AddColumn(#"Spojovani radku", "Zacatek zaznamu", each // jak poznat první záznam...
// Datum je datum nebo null
(
([Dátum výjazdu] = null)
or
((try Date.FromText([Dátum výjazdu]) otherwise null)) is date
)
and
// cesta začíná na [ ??? Je to všude???
Text.StartsWith([Cesta], "[")),
// Dva začátky by za sebou být neměly...
#"Přidané: Index" = Table.AddIndexColumn(Heuristika, "Index.1", 0, 1),
#"Sloučené dotazy1" = Table.NestedJoin(#"Přidané: Index", {"Index.1"}, #"Přidané: Index", {"Index"}, "Přidané: Index", JoinKind.LeftOuter),
#"Rozbalené Přidané: Index" = Table.ExpandTableColumn(#"Sloučené dotazy1", "Přidané: Index", {"Index", "Zacatek zaznamu"}, {"Predchozí.Index", "Predchozí.Zacatek zaznamu"}),
#"Seřazené řádky1" = Table.Sort(#"Rozbalené Přidané: Index",{{"Index", Order.Ascending}}),
#"Index prvniho radku zaznamu" = Table.SelectRows(#"Seřazené řádky1", each [Zacatek zaznamu] and ([Predchozí.Zacatek zaznamu] <> true)),
#"Zacatky zaznamu" = Table.AddIndexColumn(#"Index prvniho radku zaznamu", "Záznam", 1, 1),
#"Odebrané ostatní sloupce" = Table.SelectColumns(#"Zacatky zaznamu",{"Index", "Záznam"}),
// Máme indexy prvních řádků jednotlivných záznamů
// Může se pokračovat...
//
#"Data + záznamy" = Table.NestedJoin(Data, {"Index"}, #"Odebrané ostatní sloupce", {"Index"}, "Zaznamy", JoinKind.LeftOuter),
#"Rozbalené Zaznamy" = Table.ExpandTableColumn(#"Data + záznamy", "Zaznamy", {"Záznam"}, {"Záznam"}),
// Předchozí join změnil pořadí řádků, musíme to znovu seřadit
#"Seřazené řádky" = Table.Sort(#"Rozbalené Zaznamy",{{"Index", Order.Ascending}}),
#"Očíslování záznamů" = Table.FillDown(#"Seřazené řádky",{"Záznam"}),
#"Spojené záznamy" = Table.Group(#"Očíslování záznamů", {"Záznam"}, {{"Tab", each _, type table [Dátum výjazdu=text, Dátum príjazdu=text, Cesta=text, Vodič=text, #"Súkromné#(lf)km"=text, Služobné km=text, Celkom km=text, Tachometer=text, #"Tankovan#(lf)ie"=text, #"Podp#(lf)is#(lf)vodič#(lf)a"=text, Index=number]}}),

// tohle je trochu divočejší, ale potřebuju funkci, která
// převede tabulku na souhrnou tabulku s jedním řádkem

#"Spojení sloupců" = Table.TransformColumns(#"Spojené záznamy", {"Tab", each Table.FromColumns(List.Transform(Table.ToColumns(_), each {Text.Combine(_, " ")}), Table.ColumnNames(#"Očíslování záznamů"))}),
#"Rozbalené Tab" = Table.ExpandTableColumn(#"Spojení sloupců", "Tab", {"Dátum výjazdu", "Dátum príjazdu", "Cesta", "Vodič", "Súkromné#(lf)km", "Služobné km", "Celkom km", "Tachometer", "Tankovan#(lf)ie", "Podp#(lf)is#(lf)vodič#(lf)a"}, {"Dátum výjazdu", "Dátum príjazdu", "Cesta", "Vodič", "Súkromné#(lf)km", "Služobné km", "Celkom km", "Tachometer", "Tankovan#(lf)ie", "Podp#(lf)is#(lf)vodič#(lf)a"}),
#"Oprava hlavičky" = Table.TransformColumnNames(#"Rozbalené Tab", each Text.Replace(_, "#(lf)", " "))
in
#"Oprava hlavičky"

Dnes máme navíc PQ :

Pdf.Tables(File.Contents("C:\Temp\KNIHA.pdf"))

+ pár drobných doladění.

osobně bych to řešil:
=VYHLEDAT(C3;$F$3:$F$134;$F$3:$F$359)=C3

případně
=IFNA(VYHLEDAT(C3;$F$3:$F$134;$F$3:$F$359)=C3;NEPRAVDA)

Vysvětlení: Testujeme, jestli funkce našla to, co měla najít.

Vyhladat potřebuje setříděnou oblast hledání. Proti countif, případně hledání na přesnou shodu je pak u většího objemu dat řádově rychlejší.

Tak se mrkni, co děláš:

cd /d mění aktuální adresář, včetně jednotky. Pokud tam je notifer.exe, pak zadaný řetězec není adresář.

Nevím co chceš dělat, a nechce se mi to nasatvovat, ale zkusil bych vynechat to cd /d.

Pokud před spuštěním potřebuješ nastavit adresář, tak zkus použít oddělovač příkazů: & nebo && nebo ||.
Vhodný je nejspíš ten &&, které spustí další příkaz jen, když projde předchozí.

Stačí jednoduše

=SVYHLEDAT("*" & B1 & "*";$B$3:$C$368;2;0)

Pokud je jméno částí jiného jména (viz. elninoslov) a vyčistíte seznam jmen tak můžete použít

=INDEX($C$3:$C$368;POZVYHLEDAT("*," & B1 & ",*";"," & $B$3:$B$368 & ",";0))

(maticově)

Pokud čistit nechcete tak můžete použít:

=INDEX($C$3:$C$368;POZVYHLEDAT("*," & B1 & ",*";"," & DOSADIT($B$3:$B$368;" ";"") & ",";0))

(maticově, čistí mezery, čištění dalších znaků vypadá podobně)


Strana:  1 ... « předchozí  13 14 15 16 17 18 19 20 21   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