Excel - Makro ke zkopírování daných dodnot z listu na list

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Tomek001
nováček
Příspěvky: 21
Registrován: březen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Excel - Makro ke zkopírování daných dodnot z listu na list

Příspěvekod Tomek001 » 23 úno 2014 18:34

Dobrý večer,
tvořím si excelovský sešit na automotické zpracování dat a nemohu se pohnout, protože neovládám makra.
Sešit, který je ke stáhnutí zde http://leteckaposta.cz/412336316 obsahuje list KIN, na kterém jsem zabarvil 3 důležité sloupečky o které mi jde. Hodnoty ve žlutých sloupcích potřebuji pomocí makra nakopírovat na list Kinetic do zažlucených spoupců. Problém je, že ty hodnoty potřebuju rozdělit podle čísla, které je uvedeno v zeleném sloupci.
Tzn. všechny hodnoty ze žlutých sloupců na listě KIN kterým přísluší hodnota "0" (zelený sloupec) potřebuji nakopírovat na list Kinetic do žlutých sloupců C a E. Dále "jedničky " nakopírovat do žlutých slopuců AM a AO a tak dále. To samé udělat pro zbývající hodnoty (v tomto případě až do 12). Toto je jen příklad souborů kterých mám spoustu a nemusí končit u čísla 12, ale třeba 20 - maximum ale nedokážu odhadnout. Nicméně struktura listu KIN je vždy stejná - vždy se ale různí počet řádků.

Moc Vám děkuji za konkrétní makro.

Hezký večer.

Reklama
Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Azuzula » 24 úno 2014 15:20

Zdravím,
makrem by to šlo taky, ale můžu nabídnout už hotovou jednoduchou funkci (vzorec) který najde ty správné hodnoty.

Kód: Vybrat vše

Function NajdiVice(Hledat As Variant, Oblast As Range, prohledat_sloupek As Integer, vzit_sloupek As Integer, poradi As Integer) As Variant
'funkce na vyhledání položky v zadaném sloupci a v zadaném pořadí
Dim a As Long, x As Integer
x = 1
With Oblast
    For a = 1 To .Rows.Count
        If .Cells(a, prohledat_sloupek) = Hledat Then
            If x = poradi Then
                NajdiVice = .Cells(a, vzit_sloupek)
                Exit Function
            Else
                x = x + 1
            End If
        End If
    Next
End With
NajdiVice = CVErr(xlErrNA)
End Function

Funkci nakopírujte do klasického modulu jako makro a do buněk kam potřebujete hodnoty zapište vzorec.
příklad vzorce pro vzorový sešit a buňku:
do C38: =NajdiVice(0;KIN!$A$97:$AL$2762;10;1;B38)
do E38: =NajdiVice(0;KIN!$A$97:$AL$2762;10;36;B38)
Pro bližší info si stačí označit buňku se vzorcem a kliknout na tlačítko fx v "Řádku vzorců".
Naposledy upravil(a) Azuzula dne 25 úno 2014 22:45, celkem upraveno 1 x.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Tomek001
nováček
Příspěvky: 21
Registrován: březen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Tomek001 » 25 úno 2014 21:46

Dobrý večer, děkuji moc za reakci.
Zatím si myslím, že je to perfektní - jen nedá se to udělat tak, aby na tom listě Kinetic místo těch nulových hodnot na konci (které vlastně nesplňují zadanou podmínku) bylo třeba =NEDEF()?
Vím, že se to dá udělat pomocí funkce KDYŽ - ale těch hodnot bude v sešitě spousta, tak chci raději ty vzorce co nejvíce zefektivnit. Tím se chci teda optat, jestli to NEDEF() nelze zaimplementovat do toho modulu (?).

Moc děkuji a omlouvám se za svůj amaterismus.

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Azuzula » 25 úno 2014 22:23

Ano, jde to. Na možné chyby a jejich zobrazení jsem zapoměla.
Na konec funkce přidejte řádek s:

Kód: Vybrat vše

NajdiVice = CVErr(xlErrNA)

Doplněno i v předchozím příspěvku.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Tomek001
nováček
Příspěvky: 21
Registrován: březen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Tomek001 » 25 úno 2014 23:00

Výborné - moc Vám děkuji! :-)
PS: A proč se ty "chyby" zobrazují u všech čísel tak jak mají, ale pro nulu to nefunguje? :-)

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Azuzula » 26 úno 2014 11:39

Teď nevím jaké nuly myslíte. Nuly ve zdroji kde se hledá, nebo ty co funkce vracela na konci sloupečku když nenašla shodu podle zadání?
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Tomek001
nováček
Příspěvky: 21
Registrován: březen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Tomek001 » 26 úno 2014 17:51

Mám namysli nulu ve zdroji kde se hledá:
=NajdiVice(0;KIN!$A$97:$AL$2762;10;1;B38)
stále se tam na konci sloupečku objevují nulové hodnoty když se nenalezne shoda (viz obrázek).

Od jedničky už to funguje:
=NajdiVice(1;KIN!$A$97:$AL$2762;10;1;B38)
=NajdiVice(2;KIN!$A$97:$AL$2762;10;1;B38)
=NajdiVice(3;KIN!$A$97:$AL$2762;10;1;B38)
...

Děkuji za Váš čas :-)
Přílohy
Výstřižek.PNG

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Azuzula » 26 úno 2014 19:42

Testováno v Excelu 2007 a 2010. Nikoho s verzí 2013 neznám abych to otestovala, takže netuším v čem je problém.
Jedině někdo s vaší verzí excelu kdo by se na to podíval. Tady už asi víc nezmůžu.
Přílohy
Screenshot_1.png
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Tomek001
nováček
Příspěvky: 21
Registrován: březen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Tomek001 » 26 úno 2014 22:59

Já už vím - zkuste si číslo 2762 změnit na na nějaké vyšší, třeba 10000 (viz dole). Jak jsem totiž psal, počet řádků může být (silně) odlišný v každém záznamu - tak jsem si to do budoucna pojistil takto vysokou hodnotou
=NajdiVice(;KIN!$A$97:$AL$2762;10;1;B38)
==>
=NajdiVice(;KIN!$A$97:$AL$10000;10;1;B38)

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - Makro ke zkopírování daných dodnot z listu na li

Příspěvekod Azuzula » 27 úno 2014 08:48

Aha, už to chápu, nula je stejná jako prázdná buňka proto po zvětšení oblasti to vyhazovalo nuly. Jasné.

Spíš než zvětšování oblasti na tvrdo, bych použila následující vzorce pro dynamický výpočet řádků oblasti dat. Rychlostně to bude možná pomalejší než původně pevně definovaná oblast KIN!$A$97:$AL$2762, ale takhle se bude zvětšovat a zmenšovat podle množství řádků vstupu a zároveň bude rychlejší než prohledávání všech 10tis řádků.

buňka C38: =NajdiVice(0;POSUN(KIN!$A$97;0;0;POČET(KIN!J:J);36);10;1;B38)
buňka E38: =NajdiVice(0;POSUN(KIN!$A$97;0;0;POČET(KIN!J:J);36);10;36;B38)
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Excel - filtr hyperlinku na druhý list Příloha(y)
    od mikiracan » 06 čer 2023 11:49 » v Kancelářské balíky
    2
    2595
    od mikiracan Zobrazit poslední příspěvek
    18 srp 2023 10:17
  • Excel - automatický export listů xls do pdf včetně pojmenování Příloha(y)
    od kalosek » 28 čer 2023 20:31 » v Kancelářské balíky
    2
    2030
    od kalosek Zobrazit poslední příspěvek
    29 čer 2023 19:39
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1125
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Excel a OneDrive
    od sginfo » 11 zář 2023 15:28 » v Kancelářské balíky
    16
    6266
    od mirekol Zobrazit poslední příspěvek
    20 říj 2023 08:31
  • excel-posun makra
    od actionboy » 12 bře 2024 18:59 » v Kancelářské balíky
    1
    384
    od Grimm Zobrazit poslední příspěvek
    12 bře 2024 21:43

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů