Nejste přihlášen/a.

Přihlásit se do poradny

 

Excel - VBA

Od: elisa24® odpovědí: 28 změna:
avatar elisa24

Dobrý den, jak by se prosím v excelu udělala následující věc? Třeba ve VBA?

Mám buňky (sloupeček 2 - 4 na obr.) a chci je dát do tvaru jako je sloupeček 1, tj. multirow{3}{*}{$14265 pm 464$} - zadat počet řádků, které se mají sloučit a do třetích závorek dát obsah té buňky. Šlo by třeba udělat nějaké tlačítko, se zadaným multirow{---}{*}{---}, kliklo by se na buňku, na to tlačítko a zadalo by se počet do první {} a Excel by to takhle zformátoval?

Moc děkuji


doplněno 28.10.18 05:52:

Nebo ještě lépe - označit víc buněk, kde bude potřeba zadat stejný počet řádků, a pak kliknout na to tlačítko. Děkuji


Excel - VBA

 

 

28 odpovědí na otázku
Řazeno dle hodnocení

 

 

lobo*
hodnocení

2x

Můžeš to pro nás blbce popsat nějak polopaticky?

Přečet sem to několikrát a není mi jasný co má být výsledkem.

hodnocení

Když dělám v LaTexu tabulky a chci tam sloučit nějaké buňky, tak se to musí napsat ve formátu multirow{2}{*}{25,25}& - v první závorce je kolik se má sloučit řádků, ve třetí co se tam má napsat. A když potřebuju vytvořit takovou tabulku, tak to mám normálně v excelu - v buňkách, kde jsou čísla nebo text, a potřebuju to zformátovat. Dělám to tak, že to zkopíruju a vkládám do třetí závorky ten obsah a píšu tam, kolik se má sloučit řádků - dneska jsem dělala tabulku na stránku a tohle ruční formátování mi trvalo hodinu, tak se ptám, jestli by to nešlo nějak urychlit.

Na jednoduší tabulky, ve kterých nejsou sloučené buňky, musí být čísla ve formátu &5 &4 &7// -na to používám tenhle naprogramovaný excel leteckaposta.cz/... . Na tohle bych ráda něco podobného.

 

lobo*
hodnocení

2x

Takže máš v excelu sloupec s číslem, které jde do první složené závorky a v dalším sloupci je další číslo, které se má vložit do třetí složené závorky. A z těchto hodnot mají vzniknout textové stringy viz obrázek

Excel - VBA #2
hodnocení

Spíš jsem měla takovýhle "plán", jak bude ta tabulka vypadat a to první číslo jsem tam psala z hlavy, přes kolik řádek to chci sloučit. V tom souboru, co jsem poslala v minulém příspěvku mě zaujalo to tlačítko a pak jak vyjede ta tabulka a ptá se na údaje. To bych chtěla větět, jak se dělá. Šlo by to nějak udělat s funkcí CONCATENATE, ale nevím, jestli by to bylo ulehčení, když jsou ta čísla rozházená po celém listu - při slučování většího počtu a nemám sloupec s těmi čísly, kolik chci sloučit řádků.

Excel - VBA #3
lobo*

*sok* Holka, vůbec mi to neulehčuješ. Tu tabulku tedy tvořiš v čem? Já to pochopil tak, že tabulku tvoříš v tom latexu, kde k tomu potřebuješ ty "multirow nesmysly".

A excel chceš právě k tomu, aby Ti vygeneroval podle zadaných hodnot ti "multirow", které poté použiješ v tom latexu?

hodnocení

Pardon, špatně se vyjadřuju, to měla být jen na ukázku, že nemám dva slouečky vedle sebe a ty čáry jsem tam nakreslila rychle v excelu, aby to bylo přehlednější. Je to tak, jak si myslíte. Nemám na ukázání už ten původní soubor - tohle je ten upravený: leteckaposta.cz/... . Dřív tam místo toho multirow{}{}{} bylo jen to v té třetí závorce.

Takhle jsem to měla rozmístěné, ručně jsem to tam dopsala/dokopírovala a pak jsem to dala ještě do toho jednoho progrmau v excelu a do LaTexu.

hodnocení

*je to na listu 2

lobo*

Promiň, ale asi se tak nějak furt točíme v kruhu. Ten soubor co Jsi poslala (A3.xlsx) mi v tom moc jasno neudělal. Píšeš, že se mám zaměřit na List2, kde máš sloupce A a B. Pokud se z těchto hodnot mají generovat ty multirows tak na to stačí vzorec jak si správně uvedla fci CONCATENATE nebo když se podíváš na ten obrázek jak sem prvně vkládal je tam vidět i řádek vzorců a vzorec.

Pokud se podívám na List1, kde by měl být kýžený výsledek a správně sem pochopil, že buňky obsahovaly jen číselné hodnoty. Tohle by šlo tím makrem. Do pole by se načetla vyplněná oblast, toto pole by se poté prošlo a číselná hodnota by byla nahrazena stringem (multirow...), poté by se pole vložilo zpět do listu.

Problém však je jak by se vkládali do stringu multirow čísla "řádků", tedy hodnota v první složené závorce? Aby při každě hodnotě vyskakoval inputbox (okno pro zadání hodnoty, jako v prvním souboru) je asi blbost.

Vše je to o tom, jak budou vypadat vstupní data

Ještě mě napadá jedna věc. Co ty čísla řádků psát do buněk, kde je hodnota pro třetí složenou závorku a použít k tomu nějaký vhodný oddělovač? Makro by si toto číslo rozdělilo a poté zpracovalo. Např hodnota pro třetí složenou závorku bude 15,36 a budeš chtít sloučit 3 řádky => tedy hodnota v buňce by byla 3.15,36 nebo 15,36.3 (jako oddělovač je použité kolečko ALT+0149).

Edit: Koukám, že kolečko bylo po odeslání příspěvku nahrazeno tečkou.

hodnocení

Pardon, myslela jsem list 1 *zed*.

Proč je ten inputbox blbost? S tím oddělovačem je to dobrý nápad.

Hlavní problém, co mám je, že jsem nikdy žádné makro nedělala. Koukala jsem se jen na jedno video pro začátečníky. Panel Vývojář jsem si tam vložila. Pak dám záznam marka, vyplním tabulku a nevím, co mám dělat během toho záznamu. Mám tam vložené číslo (nebo počet řádků;číslo)...

 

lobo*
hodnocení

2x

Nějak to spolu spíchnem, o to nejde.

Hlavní bude připravit soubor s vstupními daty a rozhodnout se jak to bude celé fungovat. Zadávání řádků inputboxem (v tom případě bych to neřešil pomocí pole = stejně to bude pomalé, blbost sem to myslel v tom kontextu, že pokud bude tabulka obsahovat 60 hodnot, 60 krát se bude zobrazovat inputbox, ale pokud by Ti to takto vyhovovalo.) nebo varianta s oddělovačem (zvolit zda hodota řádků bude na začátku nebo konci čísla). Jak se bude vybírat oblast buněk ke zpracování? Makro si ji vybere samo (v tom případě budou data ke zpracování na listě sama nebo budou přítomny i jiné hodnoty = sloupce J a K na listě1 soubor A3) nebo se určí manuálně výběrem na listu nebo výběrem oblasti pomocí inputboxu?

Pokud se budou hodnoty sloupců zadávat inputboxem, jaký bude směr výběru buněk v oblasti? Je tím myšleno projdou se všechny řádky jednoho sloupce a poté se bude pokračovat dalším sloupcem nebo se projde jeden řádek všemi sloupci?

To jen tak co mě teď napadlo z patra, při psaní kódu jistě budou další dotazy.

hodnocení

Šlo by to vybírat manuálně, že by se zamodřily buňky s údaji (textem nebo čísly) - jedna nebo více (v řádku, sloupci, nebo pomocí CTRL různě), kliklo by se na tlačítko a pak by vyjel ten inputbox s požadavkem na počet řádků? Mockrát děkuji

lobo*

Koukám, že na vzorový sešit se surovými daty si se vykvajzla*smich*

Tak sem si upravil předchozí list1 leteckaposta.cz/...

Mají data takto vypadat? Pokud né tak je uprav nebo nahraj jiný soubor.

hodnocení

Omlouvám se, přemýšlela jsem který, ale to je jedno.. tady je tamten trochu upravený leteckaposta.cz/...

lobo*

OK

Kouknu na to. Jen neslibuji, že to bude ještě dnes.

hodnocení

Mockrát děkuji

 

lobo*
hodnocení

2x

Tak sem něco v rychlosti spíchnul.

Funguje to tak: Spustíš makro vyskočí inputbox, pomocí myši vybereš oblast buněk ke zpracování. Pokud potvrdíš prázdný inputbox dostaneš hlášku o špatném vzorci (očekává adresy buněk, jen aby ses nelekla). Pokud dáš storno makro se ukončí.

Pokud vybereš oblast buněk, tato oblast bude v cyklu procházena pokud narazí na neprázdnou buňku nebo buňku neobsahující řetězec "multirow"tato buňka se označí kurzorem (select) a dalším inputboxem budeš vyzvána k zadání počtu řádků (inputbox hlídá zda jeho obsahem je číslo).

A tady sem si nebyl jistý jak budeš chtít pokračovat, pokud totiž u tohoto inputboxu stiskneš storno nedojde k ukončení makra, ale do řetězce multirow se na pozici řádku vloží nula a pokračuje se v zadávání v další buňce dokud se neprojde celá zadaná oblast.

Vyzkoušej funkčnost a dej vědět zda to budeš chtít upravit.

leteckaposta.cz/...

hodnocení

*hej**hej*Moc moc děkuju, perfektní. *palec**palec*

Šlo by ještě třeba prosím, že kdyby se označila ta oblast buňek, tak by inputbox vyskočil jen jednou a počet řádků by se pro ty dané buňky zadal stejný?

lobo*

Můžu vytvořit ještě jeden kód na hromadné vložení čísla řádku.

V šešitě by tedy byly dva kódy - pro jednotlivé a hromadné vložení čísla řádku.

hodnocení

Moc moc děkuju

 

lobo*
hodnocení

2x

Tak tady je sešit s přidanou procedurou pro hromadné vložení + sem udělal malou upravu i prvního kódu (při ukončení kódu se vymaže objektová proměnná "Oblast").

Druhá varianta kódu již pracuje s polem, tudíž by zpracování mělo být rychlé.

Otestuj a dej vědět zda vyhovuje.

leteckaposta.cz/...

hodnocení

*slunce*ÚŽASNÉ. MOC MOC MOC DĚKUJI. *ua**ua**hej*

 

lobo*
hodnocení

2x

Ještě sem si uvědomil, že není ošetřen stav, kdy si vybereš pro zpracování druhý kód (hromadný) a jako oblast pro zpracování dat se vybere pouze jedna buňka. V tom případě skončí kód chybou. Nevím zda tato situace může nastat, ale pro jistotu sem udělal úpravu: leteckaposta.cz/...

hodnocení

Děkuju moc *hej**andel*. Ještě prosím, jaká jsou pravidla pro výběr buněk? Můžu označovat s CTRL více nesousedících oblastí, nebo oblast a jednu buňku, je nějak omezený ten počet oblastí? Tady leteckaposta.cz/... se mi nějak ty hodnoty nakopírovaly a nevím, co jsem udělala špatně. Děkuji

 

lobo*
hodnocení

2x

No už asi chápu jakou formou provádíš zpracování dat.

Druhý kód sem upravil a to tak, že pokud bude vybrána nesouvislá oblast dat bude zobrazená hláška o chybě a znovu zobrazen inputbox pro výběr oblasti. Výběr tedy musí být tvořen jednou souvislou oblastí buněk.

Jestli sem to tedy pochopil, chceš vložit hromadně číslo řádku ke sloučení do nesouvislé oblasti. K tomu tedy bude sloužit

třetí kód označený jako hromadne_2.

Pokud se podíváš do editoru VBA u jednotlivých kódů sem zhruba popsal funkci. Můžeš si tedy vybrat, který bude nejvíce vyhovovat tvým potřebám. Nevyhovující můžeš klidně smazat nebo zakometovat.

leteckaposta.cz/...

 

hodnocení

*slunce**slunce**slunce*Děkuju moc.

 

lobo*
hodnocení

2x

Ahoj, byla jsi velice blízko. Chyběla jen deklarace proměnné "Hodnota"a podmínka if. Schválně si porovnej oba kódy.

leteckaposta.cz/...

hodnocení

 

hodnocení

avatar elisa24

Dobrý den, mohla bych se ještě prosím zeptat, jak by se udělalo makro, které by dalo obsah buňky do extcolor{brandeisblue}{} té druhé závorky? Zkoušela jsem modifikovat Váš kód leteckaposta.cz/... , ale je to určitě špatně a také nevím, jak do Excelu makro přidat. Děkuji moc.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]