Příspěvky uživatele


< návrat zpět

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

=VYHLEDAT(1E+307;A3:E3;A3:E3)

Ověření dat funguje jen v některých případech a je dobrou pomůckou pro toho,kdo chce kontrolovat vkládaná data. Neúmyslné obejití kontrol např. kopírováním, je poměrně běžné. Zabezpečení je ale i při použití vba velmi obtížné.

Takže, pokud uživatel nechce úmyslně kontroly obejít, lze částečně tuto chybu eliminovat. Např. bez VBA omezím výběr jiné buňky v listu, ale už nezabráním ctrl-c v jiném sešitu, případě i v jiné aplikaci.

Pokud uživatel chce zadat nepovolená data, tak je zadá, i když možná ne snadno.

Funkce VVyhledat hledá v řádku $BC4:$BL4 hodnotu W$1&"*" == "NAZ PŮVODNÍ*", tj. hodnotu, která začíná textem z horního řádku (v podobných případech je výhodné hledaný text vidět, lépe se to kontroluje). Pokud najde, vráti odpovídající hodnotu z prvního řádku bloku, tj. hledanou hodnotu. Pokud ji nenajde, funkce IFNA vrátí prázdný text. Funkce část přeskočí začátek o délku textu z prvního řádku a přidá zadaný počet hvězdiček.

Pokud by to byl problém, např. některý text by byl zkrácenou verzí jiného, lze hledat W$1&"~**", což bude hledat kromě textu i první hvězdičku.

Mimochodem, občas jsou v prvním řádku i nepříjemné mezery.

Co třeba:
=ČÁST(IFNA(VVYHLEDAT(W$1&"*";$BC4:$BL4;1;0);"");DÉLKA(W$1)+4;100000)

(Za předpokladu, že soubor udrží rozumnou strukturu.)

Malá rada. Vykašli se na to.

To co vymýšlíš, je amatérsky řešená rozptýlená databáze. Excel a podobná makra nemohou nezajistit konzistenci dat a při větším počtu položek už to ani nezkontroluješ.

Pokud to musí být a položek bude více než desítka, je nezbytné definovat master data, která budou v případě rozdílů ta "správná".
K tomu je nezbytné doplnit nějakou logiku kontrol konzistence, ...

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

??


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

Uživatelské menu

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

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