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 -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4825
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12244
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    4815
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3363
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » 24 dub 2025 10:51 » v Kancelářské balíky
    5
    3954
    od atari Zobrazit poslední příspěvek
    26 dub 2025 09:11

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

Kdo je online

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