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
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ě)
OK.
3 otázky:
1) Jaký praktický význam má zjišťování velikosti objektů v excelu podle velikosti komprimovaného souboru?
2) Proč v ukázce je velikost celého souboru 6,6 MB a tento soubor obsahuje 24 listů a (změřená) velikost každého je 4,3 MB?
3) Jak vyseparování objektu z celku ovlivní velikost samotného objektu a velikost zbývající části?
Vytvoření uvedené analýzy? Přesně spíše ne (soubor je komprimován a rozměr jednotlivých prvků v souboru se dá stanovit jen obtížně)
Odhad je možný.
Potom počítejte s makrem s rozsahem v řádu tisíce řádků, spíše více.
Doba běhu u většího souboru (předpokládám, že malé nejsou moc zajímavé) v minutách i déle.
Makro v souboru bude představovat další problém, některá měření jsou destruktivní.
K napsání takového makra jsou nezbytné nadstandardní znalosti programování (vba/C#), extrémně nadstandardní znalosti excelu, včetně "power" technologií, nedokumentovaného chování objektů, ale i některých starších, dnes méně propagovaných funkcionalit. Řada potřebných znalostí se vždy vygooglit nedá (dívám se na anglické, ruské, německé a občas i jiné weby).
Výstup. Podle mých zkušeností uvedená statistika nestačí. U malých souborů je zpravidla nezajímavá, u velkých souborů je nezbytné bližší určení místa problémů. Navíc obvykle víe vadí rychlost (pomalost) než velikost.
Údržba - MS trvale excel rozvíjí. Paralelně tu máme víc verzí. Po nějakém čase bude makro minimálně nekompletní, případně chybné.
Pokud mohu soudit podle příspěvků, je zde několik jedinců, o kterých se domnívám, že při správné motivaci a dostatku času něco podobného dokáží vytvořit. Mohu i předpokládat, že některý z nich podobný nástroj někdy vytvořil. Nicméně, nástroj pro zveřejnění vyžaduje odhadem cca 3x více práce, než nástroj pro vlastní potřebu a ne každý je ochoten ho zveřejnit.
@Merlin99
Nevím, jestli s uživateli pracuji málo nebo hodně. Jen jsem došel k poznání, že podobné předefinování základních klávesových zkratek přináší více problémů než užitku.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.