< návrat zpět
MS Excel
Téma: Generování kódu z buněk + pořadového čísla
Zaslal/a freename 23.11.2017 17:46
Dobrý den,
jakožto člověk bez zkušeností s VBA bych rád požádal o radu, jestli je možné nějakou jinou cestou vytvořit v Excelu generátor kódu definovaného z buněk + pořadové číslo v určitém intervalu. Dám příklad:
v na stejném řádku mám jedné buňce mám A v druhé B v třetí C a ve čtvrtém zase A. Vygenerovaný kód by pak měl vypadat asi takto A_B_C_1000, přičemž číslo na konci kódu je výsledkem toho, že vím, že když je ve čtvrté buňce A, tak na konci kódu musí být číslo v intervalu od 1000-1099. Pokud bych měl pak na dalším řádku v buňkách A, B, B, A, tak by kód měl vypadat takto A_B_B_1001 tzn., že by se kód měl vygenerovat tak, aby byl v intervalu od 1000-1099, byl o jedno vyšší a neshodoval se s již žádným kódem s již vygenerovaným číslem danoho intervalu dle čtvrté buňk. Když bych zadal další řádek, kód by se vygeneroval tak, že by vzorec poznal, které číslo v pořadí není ještě v daném intervalu v pořadí použito a to by doplnil do nově vygenerovaného kódu.
Příklad výstupu zasílám v příloze, snad bude jasnější :)
Příloha: 38457_generator.xlsx (9kB, staženo 59x)
elninoslov(23.11.2017 18:03)#038458 Napr. takto. Ale pozor, akonáhle niečo vypočítavate takto vzorcom, a vymažete riadok, zmení ostatné kódy. A ak je to napr. číslo objednávky, alebo materiálu a pod, tak je "priekak" na svete. A pripočítava sa vždy počet po daný riadok, ale je to možné urobiť aj na Maximum+1.
Příloha: 38458_38457_generator.xlsx (9kB, staženo 86x) citovat
freename(23.11.2017 19:46)#038461 Aha..už jsem si to zkusil. Je pravdou, že se můžeš stát, že někdo řádek smaže. Přepisovat by se to asi nemělo. Jak bych prosím vás mohl toto ošetřit?
citovat
freename(28.11.2017 8:24)#038502 elninoslov napsal/a:
Napr. takto. Ale pozor, akonáhle niečo vypočítavate takto vzorcom, a vymažete riadok, zmení ostatné kódy. A ak je to napr. číslo objednávky, alebo materiálu a pod, tak je "priekak" na svete. A pripočítava sa vždy počet po daný riadok, ale je to možné urobiť aj na Maximum+1.Příloha: 38458_38457_generator.xlsx (9kB, staženo 5x)
Mohu se ještě prosím zeptat, jak do tohoto vzorce ještě přidám podmínku, aby se čísla počítala od začátku ještě dle hodnoty ve sloupci 3. Např. když mám ve třetím sloupci A a vím, že číselné hodnoty dle sloupce 4 bude kód nabývat v intervalu 2000-2099, tak bude pořadové číslo 2001, když bude v dalším řádku třetího sloupce opět A, tak 2002, ale když bude v dalším řádku třetího sloupce B, tak to bude opět 2001.
Podle čtvrtého slupce se vybere číselný interval kódu (což funguje skvěle) a podle třetí ho sloupce by se při každé nově definované hodnotě číslovalo v daném intervalu od jedničky.
citovat
freename(29.11.2017 10:22)#038515 Ahoj, zkouším dle elninosova souboru aplikvoat funkce COUNTIFS, ale nechápu, proč počítadlo nefunguje, když bych měl mít vzorec napsán správně.
=A2&"_"&B2&"_"&C2&"_"&SVYHLEDAT(D2;$G$2:$H$4;2;NEPRAVDA)+COUNTIFS($C$2:$C2;$G$2;$C$2:$C2;$G$3;$C$2:$C2;$G$4;$A$2:$A2;$G$2;$A$2:$A2;$G$3;$A$2:$A2;$G$4)
citovat
elninoslov(5.12.2017 14:04)#038637 Ak má byť interval 2000-2099, tak prvé číslo nemôže byť 2001, ale 2000, ale to si len na konci zmeníte to "-1".
Na ten Váš posledný popisovaný príklad platí:
=A2&"_"&B2&"_"&C2&"_"&VLOOKUP(D2;$G$2:$H$4;2;FALSE)+COUNTIFS($D$2:$D2;D2;$C$2:$C2;C2)
=A2&"_"&B2&"_"&C2&"_"&SVYHLEDAT(D2;$G$2:$H$4;2;NEPRAVDA)+COUNTIFS($D$2:$D2;D2;$C$2:$C2;C2)
Ale v poslednom príspevku pridávate ďalšie a ďalšie podmienky. Uveďte príklad vo forme súboru (nie popisom), kde je to čo máte, a vedľa manuálne vyrobte čo s toho má byť ako výsledok.
PS: Ak sa tie čísla nesmú meniť pri zmazaní, treba to vyriešiť jedine makrom. Takže tento vzorec je pase.
citovat