Automatické dosazení do tabulky - excel
Zdravím!
Řeším celkem banální problém a nemohu tomu přijít na kloub...
Mám zadány hodnoty(jsou to velikosti oblečení) a potřebuji je automaticky dosadit do tabulky s tím, že hodnoty (vstupní) si budu aktualizovat...
Přidávám xls soubor, který obsahuje vstupní data, která se mohou lišit (občas některý řádek nebude nebo jich bude celkově více)
Důležité je B3-Bx a D3-Dx
Napravo je tabulka velikostí, do které potřebuji dosadit hodnoty z D3-Dx na základě velikostí.
Příklad: B3 je 6@53@42@170(veliksot 42/170, poslední 2 čísla se zavináči určují velikost) (celkem 0 ks) čili v tabulce napravo potřebuji hodnotu 0 (ks) do místa 42/170 (dle @42@170)... Navíc se občas může stát, že vstupní hodnota bude vypadat takto "6@54@54@170" čili, že se budou dvě čísla opakovat a já potřebuji tedy vždy jen poslední dvě hodnoty z toho řádku...
Rozsah bude vždy od 42/164-194 až po 64/164-194 ... některé vstupní řádky tedy nebudou, jindy budou všechny... Potřebuji poradit, jak zadat excelu, aby hledal pouze @42@170 a do tabulky na příslušné místo vepsal počet kusů... Už nad tím maturuju asi 2 hodiny a nejsem schopen se k něčemu dopracovat. Stydím se...
Snad jsem vše vyjádřil jasně, kdyby byly nějaké nejasnosti, ihned upřesním
Jste mou poslední nadějí
Děkuji za případnou pomoc!
Bartex
vytvoříš si z těch dvou čísel a zbytku textového řetězce index a to budeš hledat v tabulce
do buňky G3 si dej toto a protáhni na zbytek buněk =VLOOKUP("6@53@"&G$2&"@"&$F3&"";$B:$D;3;0)
je možné si zbytek čísel taky zprocesovat, to pochopíš se vzorce
mám anglický excel, pro český je třeba zaměnit VLOOKUP=SVYHLEDAT
chybové hlášky lze eliminovat funkcí IFERROR(), nevím jaký je český ekvivalent
="6@53@"&G$2&"@"&$F3&""
podívej se na toto, jestli to dobře funguje
Asi si hodím mašli...
Zkusil jsem to tam nacpat, ale nefunguje mi to.
Myslíš, že bys mohl udělat ve svém excelu jeden řádek a hodit ten soubor tady? Já to pak z toho snad vydumám...
Děkuji!
Můj pokus pomocí maticového vzorce: viz soubor.
Zkontroluj si relevantnost výsledků.
PS: Při roztahování vzorce je potřeba si pohrát s absolutní adresací na "záhlaví tabulky"
Funguje to bezvadně... zkoušel jsem i přidat/ubrat řádek a vše funguje...
Abych přiznal barvu, vůbec netuším, jak to funguje. Nicméně nerozumím tomu, co bych roztahoval? Jen do tohohle sloupce vložím nové hodnoty a dostanu je v tabulce.. Nic víc nepotřebuju. Žádnou další tabulku vytvářet nebudu - je to naprosto dostačující
Měl sem za to, že tohle je pouze vzorová tabulka (ukázka).
Tím se vše vyřešilo
..Jo a
Podívej se na "vyhodnocení vzorce" a bude Ti to jasné, nehledej v tom žádnou vědu. Pokud by si chtěl tak vzorec vysvětlím.
Koukám na to a nic.. asi to bez nějakého vysvětlení "naživo" nemá ani smysl popisovat
Nicméně... dá se to použít i když se změní cifry? Dejme tomu, že místo posledních čísel(vstupní hodnoty) bude třeba 5@50@39@176 ?
Že bych si přepsal tu tabulku na požadovaná čísla, aby to odpovídalo? Asi to budu nakonec muset pochopit, co?
pokud se nebude měnit délka řetězce ..
hodnota z tabulky vs. nová hodnota
6@53@46@170
5@50@39@176
tak není problém, pokud by se měnila délka např.
6@45@147@180
tak by bylo potřeba upravit vzorec ve funkci ČÁST nebo udělat vzorec více blbuvzdorný.
Budeš tedy měnit délku textového řetězce?
Myslím, že by se to nemělo stát... rozhodně ne v blízké budoucnosti Kdyby ano, co by bylo třeba udělat?
Pokud by se změnili všechny hodnoty na stejnou délku to je:
6@53@46@188
6@53@48@176
nebo
6@53@483@176
6@53@480@170
tak by stačilo napevno zněnit hodnoty ve funkci ČÁST
ČÁST($B$3:$B$59;6;2) to je číslo počátečního znaku a počet znaků.
Pokud by sloupec ze kterého se čerpají data do tabulky obsahoval "směs" hodnot:
6@53@46@188
6@53@48@176
6@53@483@176
6@53@480@170
6@53@48@1766
6@53@48@1708
Bude potřeba vytvořit nový vzorec, který by bral v potaz měnící se počet číslic mezi znakem @.
Do funkce ČÁST by se místo fixních hodnot 6 a 2 vložil další vzorec, který by vypočítával pořadí počátečního znaku atd.
Doufám, že sem to popsal alespoň trochu srozumitelně
Děkuji mnohokrát za vysvětlenou. Kombinace nenastane... jediný případ, který by mohl nastat je, že se změní ....@46@170 na ....@37@170 A pro ten případ, chápu-li to správně, mi stačí pouze změnit hodnty na tabulce, ve které se mi ukáží počty tak, aby to odpovídalo... například 42=37, 43=38, 44=39 atd ))
Děkuji mockrát, v pondělí to otestuju a dám vědět ;)
Hezký večer, Bartex
Zdravím,
tak mám zde aktualizaci
Může nastat ještě tato varianta...
0@02@37@170@3
S tím, že ta trojka na konci pro mne není důležitá a co se předchozích čísel týče, tak jsou od 37-46 (čili 10 namísto 12)
Objevil jsem další nedostatek Když bude těch řádků méně, než 59 (třeba 15), tak mi to vyhodí chybové hlášení ve všech tabulkách
Myslíš, že bys to mohl ještě do toho tvého souboru upravit? Myslím tím, že bys udělal ještě kopii pro tuhle variantu - budou tedy dva soubory - jeden pro "37-46" - viz příloha a druhý původní uravený ve smyslu, že nebude důležitý počet vložených řádků. Další příloha - kde nastala chyba.
Mnohokráté děkuji
Bartex
Problém s řádky vyřešíš odstraněním omezení na výběr řádků
=SUMPRODUCT((VALUE(MID($B$3:$B$59,6,2))=$G$2)*(VAL UE(RIGHT($B$3:$B$59,3))=$F3)*($D$3:$D$59))
=>
=SUMPRODUCT((VALUE(MID($B:$B,6,2))=$G$2)*(VALUE(RI GHT($B:$B,3))=$F3)*($D:$D))
.. jen to bude trošku déle počítat :)
První problém se vyřeší tak, že se najde část textu která tě zajímá.. ale zatím mě nenapadá jak to přes funkci MID+SEARCH udělat :)
Mno, s tím počítáním je to pravda... Docela se to tady kouše Jiná možnost?
Tak oprava první tabulky
#2
Kombinace obou tabulek.
V tabulce se vyskytují jak hodnoty 0@56@54@182 tak i 0@02@42@170@3
Hned jak budu mít k dispozici data, na kterých bych to otestoval, dám vědět. Prozatím to vypadá skvěle. Mockrát děkuji! Jsem nesmírně vděčný...
Bartex
Zdravím,
Tak jsem se dnes dostal k testování a mám ještě jednu prosbu. Vzorec je konstruován – z toho, co chápu, na 59 řádků. Potřeboval bych, aby byl na 500, klidně i 1000. Protože pokud je řádků více než 59, už to nebere… Aspoň jsem tak vypozoroval. Zkoušel jsem ve vzorci ““““=SOUČIN.SKALÁRNÍ((IFERROR(HODNOTA(ČÁST($B$3:$B $59;6;2))=$G$2;0))*(IFERROR(HODNOTA(ČÁST($B$3:$B$5 9;9;3))=$F3;0))*($D$3:$D$59))““““
Přepsat hodnoty 59 na 200 (například) a vůbec nic to nezměnilo… A to jsem měl za to, že ta padesátdevítka určuje, kolik řádků to má sledovat… Mohu tedy ještě poprosit o toto drobné doladění?
Více než 1000 řádků snad nikdy mít nebudu…
Přikládám soubory - zvlášť různé varianty vstupních dat, kde je pozorovatelné, že tabulka se vyplní jen z části.
Poprosil bych, aby zůstaly dva soubory... je to tak plně vyhovující z důvodu rozdílných cílových tabulek...
Děkuji, Bartex
Máš pravdu
Stačí přepsat všechny 59-ky na 200, 500, 1000 kolik chceš. Podmínkou ukončení zápisu vzorce je stisk trojkombinace
CTRL+SHIFT+ENTER protože se jedná o vzorec maticový.
Tady to máš.
I když věřím, že by si to zvládnul sám. Schválně si to zkus
Aha! Odklepl jsem to enterem!
Děkuji za informaci a úpravu... S vědomostí trojhmatu bych to zvládl, i přesto děkuji za rychlou odpověď a ujasnění.
Hezký zbytek večera,
Bartex