» Poradna » Programy

Excel Makra - vyhledání položky na základě znalosti jednoho údaje z řádku a její zkopírování

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 14/14
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [88.101.174.---]

Zdravím,S Makry začínám, ostatně tak i s Funkcemi. Tak ještě neznám všechny vychytávky. Chci poprosit zkušenější osazenstvo o radu. Mám jeden sešit, který obsahuje 3 listy. Import, Sheet2 a Sheet3. Úkol zní, že z listů Sheet2 a Sheet3 přenést příslušná data do listu Import. Jedná se o obyčejné položky oblečení a bot, takže velikost, barva, výrobce, popis a jestli je to pro muže či ženy.Data, která patří k sobě, mají vždy na každém listu stejný kod.V součastnosti to dělám tak, že si zkopíruji kod z listu Import a nechám ho pomocí CTRL+F vyhledat na dvou zbylých listech. Tam se mi zobrazí na kterém řádku jsou příslušné informace. Poté čísla daných řádků zkopíruji do jednoduchého Makra a nechám jej spustit. Makro nejdříve projde a zkopíruje položky v listu Sheet2 a Sheet3 a vloží je na ta správná místa do listu Import. Takto pořád dokola. Pomůže to, ale je to pomalé.Moje vize je takové, že postup by byl následující. Zkopírovat kod z listu Import, prohledat ostatní dva listy a chtěná data zkopírovat a vložit je do správného sloupce daného řádku s kodem. Poté se přesunout o řádek níže a postup zopakovat a takhle pokračovat až na konec tabulky. Lze tento postup nějak elegantně vyřešit? Makrem? Funkcemi?V součastnosti moje Makro vypadá takto:Sub obchod()'' obchod Makro' dvojka'' Klávesová zkratka: Ctrl+i' Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Cells.Find(What:="100932-9900", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate' list sheet2 - produkt name Range("B158").Select Application.CutCopyMode = False Selection.Copy Sheets("Import").Select' list import - nazev produktu Range("B158").Select ActiveSheet.Paste Sheets("Sheet2").Select' list sheet2 - sex Range("E158").Select Application.CutCopyMode = False Selection.Copy Sheets("Import").Select' list import - kategorie 1 Range("D158").Select ActiveSheet.Paste Sheets("Import").Select' list sheet3 - destription Range("A237").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet3").Select Cells.Find(What:="100932-9900", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate Range("A237").Select Application.CutCopyMode = False Selection.Copy Sheets("Import").Select' list import - popis Range("C158").Select ActiveSheet.Paste ActiveWindow.ScrollColumn = 2 Sheets("Sheet3").Select' list sheet3 - vyrobce Range("C238").Select Application.CutCopyMode = False Selection.Copy Sheets("Import").Select' list import - vyrobce Range("E158").Select ActiveSheet.Paste Sheets("Sheet3").Select' list sheet3 - color Range("E238").Select Application.CutCopyMode = False Selection.Copy Sheets("Import").Select' list import - technicky paramatr 1 Range("F158").Select ActiveSheet.Paste Range("A145").SelectEnd SubDíky za všechny rady.

Odpovědi na otázku

 |   |  Linux Chrome 21.0.1180.89  |  [89.102.202.---]

Jo jde to makrem.Mohl bych ti to naprogramovat (třeba na stisk tlačítka ve formuláři), ale pouze v Calcu (Libre Office), což by ti asi v Excelu nechodilo.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 21.0.1180.77  |  [89.102.202.---]

Musel by si mi poslat tvůj soubor v Excelu.Já si to načtu v Libre Office (Calc) (umí import z Excelu)Přidám tam funkci a odešlu ti to ve formátu ODT.Ty by sis to musel buď spouštět v Libre Office, nebo přepsat do Excelu (to by asi nebylo jednoduchý).Nevím jestli Microsoft podporuje import z otevřeného formátu ODT (ale pochybuji).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [90.180.5.---]

NE-SMY-SL

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [90.180.5.---]

Makro je to poslední, co by měl uživatel excelu použít.Jestli tě dobře chápu, tvůj problém řeší funkce SVYHLEDAT().Napoprvé bývá těžší ji pochopit, příklad v helpu pomůže.Nebo detailněji popiš strukturu listů Import, Sheet2, Sheet3 anebo někam vystav vzorek.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [88.101.174.---]

O této funkci jsem taky přemýšlel, ale jak říkaš, napoprvé je to těžší pochopit. Pro lepší představu dávám link, kde je onen dokument. https://skydrive.live.com/redir!47249a rovněž přikládám originál zadání:"Tato tabulka obsahuje 3 listy (import, sheet2 a sheet3). Úkolem je vyplnit celý list s názvem import a to v takové formě v jaké jsou první 3 vzorové řádky v tomtéž listě, tj. import. Všechny potřebné informace naleznete v listech sheet2 a sheet3."

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [90.180.5.---]

Odkaz nefunguje.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [88.101.174.---]

Omlouvám se. Teď by to mělo být v pořádku.https://skydrive.live.com/view.aspx!47249

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [88.101.174.---]

Odkaz funguje jen když kliknete na tlačítko odpovědět a zkopírujete ho z mého předposledního příspěvku.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [90.180.5.---]

1. Přesuň na listech Sheet2 a Sheet3 sloupec Kod na první místo zleva2. Setřiď listy Sheet2 a Sheet3 vzestupně podle pole Kod3. Na listu Import napiš do pozice:B2: =SVYHLEDAT(A2;Sheet2!A:E;2;0)C2: =SVYHLEDAT(A2;Sheet3!A:E;2;0)D2: =SVYHLEDAT(A2;Sheet2!A:E;5;0)atd.4. Vzorce rozkopíruj dolů

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Unknown IE 9.0  |  [89.24.48.---]

Takze jestli to chapu dobre, tak kdyz tabulka v listu Import je vyplnena po radek 221, tak na dalsi radek mam napsat B222: =SVYHLEDAT(A222;Sheet2!A:E;2;0)C222: =SVYHLEDAT(A222;Sheet3!A:E;2;0)D222: =SVYHLEDAT(A222;Sheet2!A:E;5;0)Atd.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [90.180.5.---]

Já bych to dělal od řádku 2, čili bych to přepsal.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X AppleMAC-Safari 5.0  |  [78.102.153.---]

Postupoval jsem presne podle tveho navodu, ale bez uspechu. Porad hlasi ze je ve funkci chyba, nebo ze se vyskytuje cyklicky odkaz. Tabulku mam jiz hotovou makrem, ale prijde mi logictejsi to delat pomoci funkce a tak bych si rad predelal k obrazu svemu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 21.0.1180.89  |  [90.180.5.---]

Musíš někde dělat chybu, mám ten postup ověřený.Udělal jsi ten bod č.1? Tj. přesunout sloupec a tu díru po něm odstranit.Kdybys z toho dokumentu odstranil makro a zpřístupnil to pro zápis, tak ti to opravím přímo tam.Je to otázka desítek sekund.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X AppleMAC-Safari 5.0  |  [78.102.153.---]

Tak se zadarilo. Jen jsem musel upravit trochu funkci. Fungovalo az =SVYHLEDAT(A2,Sheet2!A:F,2) atd. Az zatracene jednoduche. Mockrat diky za velkou pomoc. Jsem tvym dluznikem

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Select, Import, Vyhledání, False, Vize, Oblečení, Dvojka



Určitě si přečtěte


Tesla chce změnit nákladní dopravu. Její elektrický náklaďák má ohromující parametry

Tesla chce změnit nákladní dopravu. Její elektrický náklaďák má ohromující parametry

** Tesla představila elektrický kamion ** Má obdivuhodný výkon i dojezd ** Prodávat by se měl už za dva roky

17.  11.  2017 | Vojtěch Malý | 228

Nejlepší notebooky do 10 tisíc, které si teď můžete koupit

Nejlepší notebooky do 10 tisíc, které si teď můžete koupit

** I pod hranicí desíti tisíc korun existují dobře použitelné notebooky ** Mohou plnit roli pracovního stroje i zařízení pro zábavu ** Nejlevnější použitelný notebook koupíte za pět a půl tisíce

16.  11.  2017 | Stanislav Janů | 55

Do 20 let nebude nikdo vlastnit auta, říká zkušený šéf několika automobilek

Do 20 let nebude nikdo vlastnit auta, říká zkušený šéf několika automobilek

** Bývalý šéf a expert z několika velkých automobilek se vyjádřil k budoucnosti tohoto průmyslu ** Do 20 let „nikdo“ nebude vlastnit auta ** Veškerá doprava bude řešená pomocí velkých logistických platforem

15.  11.  2017 | Karel Javůrek | 76