| | |
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Autor | Správa |
---|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 |
dobry den
ako spojim viac harkov spolu.
v kazdom harku mam stlpec B a I z ktorych potrebujem dat
hodnoty do noveho harku
tie udaje by som potreboval len prepisat do noveho harku
tych harkov je 160 (okrem ctrlc a ctrl v )
dakujem
|
|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Skús nahrať makro a upraviť, ak máš s tým skúsenosti.
|
|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 | Napísal autor témy skulkos: 24.07.2012 19:39 | |
|
poprosim ta ako na to.
dakujem
|
|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Sorry.
Ja som uplny laik.
Skusil som to takto, ale sprosty Excel nechce akceptovať ani jeden sposob kopirovania, ktore su uvedené v helpe. Bila Gatesa by som zastrelil za to hneď. 2 hodiny sa s tým hrám a nefunguje to.
Myšlienka je taká, že treba vytvoriť harok s nazvom "copy" (bez uvodzoviek) v tom zošite (ani to neviem spraviť) a spustiť makro, ale nejde to.
Je tu niekto, kto by to vedel rozchodiť?
Treba vytvoriť nové makro a do tela skopírovať toto:
i = 1 For Each sh In Worksheets MsgBox (sh.Name) If sh.Name <> "copy" Then
Rem 1. sposob sh.Range("B:B").Copy Destination:=Worksheets("copy").Range(Cells(1, i)) i = i + 1
Rem 2. sposob sh.Select Range("I:I").Select Selection.Copy Worksheets("copy").Select Range(Cells(1,i)).Activate Selection.Paste i = i + 1 End If Next sh End Sub
Človek, ktorý pracuje s makrami a má čas to rozchodiť a aj to rozhodí, ma veľmi poteší, pretože sa niečo naučím.
// pridané po 1 hodine 48 minútach od posledného príspevku
Prosím Ťa, najprv si urob kópiu dokumentu a niekde si ju odlož ako zálohu.
Nejako sa mi to podarilo zbúchať:
Vytvor nové makro:
v menu Zobraziť (v Office 2010) daj "Zaznamenať makro", kľudne nechaj ten názov, aký tam je (Makro1) a daj "OK".
v menu Zobraziť daj "Zastaviť záznam"
v menu Zobraziť daj "Zobraziť makrá"
vyber to nahraté makro a daj "Úpravy"
a vlož tam toto makro medzi Sub Makro1() a End Sub
Kód: i = 1 For Each sh In Worksheets If sh.Name <> "copy" Then sh.Select Columns("B:B").Select Selection.Copy Sheets("copy").Select Columns(i).Select ActiveSheet.Paste i = i + 1 sh.Select Columns("I:I").Select Selection.Copy Sheets("copy").Select Columns(i).Select ActiveSheet.Paste i = i + 1 End If Next sh Po vložení zavri okno "Visual Basic for App..." Vytvor hárok s názvom "copy" (Musí sa volať presne "copy" bez úvodzoviek (4 znaky)) Spusti makro. "Zobraziť makrá" vyber nahraté makro "Spustiť" Daj, prosím Ťa, vedieť, či to zbehlo tak ako má. // pridané po 12 hodinách 10 minútach od posledného príspevkuMozes pouzit aj tento kod Kód: i = 1 For Each sh In Sheets If sh.Name <> "copy" Then sh.Columns("B").Copy Destination:=Sheets("copy").Columns(i) i = i + 1 sh.Columns("I").Copy Destination:=Sheets("copy").Columns(i) i = i + 1 End If Next sh
Robi to iste, je kratsi a vyzera lepsie.
|
|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 | Napísal autor témy skulkos: 25.07.2012 20:01 | |
|
super sme o niečo dalej.
všetky udaje dalo do kopy
ako dosiahnut aby isli pod seba a nie vedla seba?
ď.
|
|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Tie dáta zaberajú všade rovnaký počet riadkov, alebo je to hárok od hárku rôzne?
Ak zaberajú rovnaký počet riadkov, tak koľko riadkov?
// pridané po 21 hodinách 26 minútach od posledného príspevku
Hotovo.
- program zistí pokiaľ je zaplnený stĺpec B (row_add_b), to isté aj stĺpec I (row_add_i)
- vyššiu hodnotu uloží do row_add
- overí, či sú vôbec nejaké dáta (to znamená, že ak je posledná zaplnená bunka stĺpcov v riadku 1 a prvé bunky oboch stĺpcov sú prázdne, preskočí kopírovanie tohto hárku)
- pripojí kopírované dáta za koniec posledného údaju v hárku
- zvýši hodnotu row_index o hodnotu počet skopírovaných riadkov (row_add) - hodnota row_index ukazuje na riadok kam sa bude kopírovať.
Kód: destination_sheet = "copy" row_index = 1 For Each sh In Sheets If sh.Name <> destination_sheet Then sh.Activate Range("B65535").Select row_add_b = Range(Selection, Selection.End(xlUp)).Row Range("I65535").Select row_add_i = Range(Selection, Selection.End(xlUp)).Row row_add = row_add_i If row_add_b > row_add_i Then row_add = row_add_b If row_add > 1 Or Cells(1, 2) <> "" Or Cells(1, 9) <> "" Then Range("B1", Cells(row_add, 2)).Select Selection.Copy Destination:=Sheets(destination_sheet).Cells(row_index, 1) Range("I1", Cells(row_add, 9)).Select Selection.Copy Destination:=Sheets(destination_sheet).Cells(row_index, 2) row_index = row_index + row_add End If End If Next sh Sheets(destination_sheet).Activate Otázka pre znalých excelovských makier: Ako zistím posledný údaj v stĺpci? Ja som to musel tak, že som urobil select od 65535. riadku po xlUp (presunie na najbližší údaj hore) a potom som si hodnotu uložil do premennej. Kód: Range("I65535").Select row_add_i = Range(Selection, Selection.End(xlUp)).Row //tento príkaz úplne zbytočne robí select, čo neúmerne spomaľuje beh programu (vlastne oba príkazy)
existuje nejaký normálny spôsob, ako zistiť posledný údaj v stĺpci?
Ďakujem.
|
|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 | Napísal autor témy skulkos: 26.07.2012 18:57 | |
|
skopiroval som kod a po spustení vysvietilo na žlto tento riadok:
Selection.Copy Destination:=Sheets(destination_sheet).Cells(row_index, 2)
- nemožno zmeniť časť zlúčenej bunky
uvedený riadok som vymazal a dalo to pod seba
- udaje ktore potrebujem su v stlpcoch B/H/I/J zvyčajne riadky 3 - 30
- skušal som to na 48 stranach / prenieslo to aj ostatné stlpce /
kde boli udaje pod stlpcom H alebo J tak tam prenieslo len A a B stlpec
------------------
zošit sa sklada zo stlpcov A-M a do 30 riadkov
keby sa urobil kod na prenesenie všetkych stlpcov a riadkov pod seba tak ako su?
ď.
|
|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Ak to nie je tajné, môžeš mi ten dokument poslať? Aby som to mohol odskúšať.
Ja som to pochopil tak, že potrebuješ zo 160 listov (hárkov) údaje zo stĺpcov B a I dať pod seba do jedného hárka.
Ja som ten kód testoval na rôznych dátach a fungoval mi. Ale kód určite neráta s tým, že sú zlúčene bunky. Máš v tom súbore zlúčené bunky?
Selection.Copy Destination:=Sheets(destination_sheet).Cells(row_index, 2)
ten príkaz kopíruje vybranú oblasť na miesto kde row_index je riadok a 2 je stĺpec.
Takže ak chceš iné stĺpce prenášať aj v príkaze Cells to musíš zmeniť.
Ideálne by bolo , ak by si mi mohol ten dokument poslať.
suchsoft(zavinac)remakesystem.com
Heh, až teraz som pochopil, ok, to by šlo. Proste urobiť kópírovanie v rozsahu A1:M30. Ale neviem, či sa dnes k tomu dostanem,
|
|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 | Napísal autor témy skulkos: 26.07.2012 20:22 | |
|
- poslať sa mi to neda
- niektore bunky su zlučene
- pochopil si to OK (B a I)
- ked som to prechadzal kus po kuse tak udaje su aj v stlpci H,J
- dalo by sa mu určiť že prenes udaje v harkoch od A1 po J45 a spoj ich do "copy"
a tam by som si to už poopravoval ( jednotlive stlpce)
ď. // pridané po 2 minútach od posledného príspevkuposledny riadok som necital
to asi preto že mam maly monitor
|
|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Spravím tak, keď nie dnes, tak najneskor do zajtra do 17:00. // pridané po 1 hodine 22 minútach od posledného príspevkuTakže takto:
Kód: destination_sheet = "copy" row_index = 1 For Each sh In Sheets If sh.Name <> destination_sheet Then sh.Activate Range("A1:J45").Copy Destination:=Sheets(destination_sheet).Cells(row_index, 1) row_index = row_index + 45 End If Next sh Sheets(destination_sheet).Activate
Toto bolo moc jednoduche po tom všetkom, čo som sa naučil.
Daj vedieť, ako to dopadlo. Ale verím, že už bez problémov.
|
|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 | Napísal autor témy skulkos: 30.07.2012 18:19 | |
|
dakujem, za tvoju pomoc
dost mi to ulahcilo pracu
-----------------------------
aj ja som trocha mudrejsi
-----------------------------
ked sa tak vratim na zaciatok a zobrali by sme alternativu ze chcem spojit len urcite stlpce aj ked su zlucene?
dakujem.
|
|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Samozrejme, že je to možné spraviť. Lenže ja som len začiatočník.
Ak to nutne potrebuješ, môžem sa o to pokúsiť
Len mi to musíš presnejšie napísať, čo potrebuješ.
Myslíš to tak, že kopírovať stĺpce, ktorých aspoň jedna bunka je horizontálne zlúčená s inou bunkou?
|
|
Registrovaný: 23.07.12 Prihlásený: 30.07.12 Príspevky: 7 Témy: 1 | Napísal autor témy skulkos: 11.08.2012 18:45 | |
|
az dnes sa mi podarilo dostat k pc
bol som dlho mimo
-----------------------------------------
vyskocil mi iny problem:
mam 75 suborov excel / po 1 harku
je na to figel ako dat vsetko do jedneho suboru kde by bolo 75 harkov?
dakujem
|
|
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|