IZBORNIK HOME FORUM ACCESS 2003 EXCEL 2003 WORD 2003  .
   
   
HOME
FORUM Win Tips&Tricks
   
KAKO INSTALIRATI
WINDOWS XP ?
Kako instalirati Win XP sa USB STICKA
Kako instalirati WINDOWS 7 ?
Naučite za 15 minuta raditi u Windows XP
Naučite Internet Explorer i Outlook Express
za 15 minuta
Kako kreirati BOOT CD za instalaciju Win95
   
MS OFFICE 2003
MS OFFICE 2007
   
   
HOME NETWORK
tutorijal za mreže
Network Windows 7 - XP
   
ZANIMLJIVI LINKOVI
BROJEVNI SUSTAVI
(DEC, OKT, BIN, HEX )
CMD - Command Prompt
CISCO - CCNA tutoriali
VLSM and SUBNETTING
   
Tutorijali za phpBB forum
JAVASCRIPT
VISUAL BASIC 6.0
AUTOCAD 2007
 
.
MICROSOFT EXCEL 2007 - Kako kopirati selektirane ne susjedne ćelije na drugi List okomito

Kako kopirati selektirane ćelije na drugi List
bez praznih redova
(How to copy selected cells to another Sheet without blank row, nonblank cells)

Search This Web Site

Adsense sponzor






Kopiranje selektiranih nesusjednih ćelija ili vrijednosti na drugi radni list pomoću VBA makronaredbe
(How to copy multiple nonblank cells to another Sheet)

Ako ste ikada imali potrebu odraditi neko kopiranje na brzinu a takvih kopiranja ima podosta, morali ste selektirati određene ćelije pa Copy pa Paste i tako u krug, a još ako ih je trebalo posložiti još veći problem. To zna biti zamorno i dosadno. Pomoću VBA možete to odraditi jednim klikom na button.

U ovom primjeru pokazat ću kako možemo selektirati više ne-susjednih ćelija (multiple cells) i kopirati ih na drugi radni list u okomitom rasporedu pomoću VBA makronaredbe ali tako da kopirane ćelije budu jedna ispod druge bez praznih redova. Kao što i sami znate, Excel ne dozvoljava kopiranje ne-susjednih ćelija.

Zamislimo situaciju da iz neke tablice moramo kopirati više ćelija (vrijednosti) negdje, bilo na istom Sheetu ili na drugi Sheet.

Pomoću Macroa iz priloga dovoljno je selektirati ćelije i kliknuti na button. Makronaredba će kopirati selektirane ćelije na drugi Sheet "komada". Uočite na slici ispod da sam selektirao određen broj ćelija koje nisu jedna do druge tj. nisu susjedne. Kada bih u tom momentu išao na na klasično kopiranje u Excelu, Excel bi me upozorio da nije moguće kopirati "multiple selected cells". No dovoljan je klik na button za pokretanje Macroa i selektirane ćelije bit će kopirane na radni list "komada" jedan ispod drugog bez praznih redova (without blank row). Slijedeće novo selektiranje i opet klik na button Copy i Macro će kopirati u prvu praznu ćeliju stupca A selektirane ćelije i tako redom.

Uočite na slici ispod kopirane vrijednosti sa Sheeta "baza". Ovdje želim napomenuti, da će se brojevi složiti redoslijedom kako ste selektirali. Dakle ako želite strogi niz redoslijeda brojeva tada selektirajte u nizu. Nakon prvog kopiranja selektirajte druge ćelije i klik na button Copy, podaci će se kopirati u prvu praznu ćeliju bez praznih redova itd itd...



Za uspješnu upotrebu ove radnje kopirajte Macro kod koji se nalazi ispod u Module vaše radne knjige (Workbook). Insertirajte Button sa kartice Developer i pridružite mu Macro "KopirajSelektirano"

Macro code za ovaj primjer kopiranja raspona ćelija (tablice) bez praznih redova na drugi Sheet glasi. Kopirajte ga u Module vaše Workbook.

Sub KopirajSelektirano()
'kopiranje selektiranih celija sa jednog Sheet
'na drugi Sheet u okomitom raspordu bez praznih redova

Dim X As Long
'deklariranje varijable "X"
Dim bza As Worksheet
'deklariranje varijable "bza" koja je vezana uz Sheet Baza
Dim kom As Worksheet
'deklariranje varijable "kom" koja je vezana uz Sheet Komada
Set bza = Worksheets("baza")
'Sheet odakle kopiramo
Set kom = Worksheets("komada")
'Sheet gdje kopiramo
bza.Select
'selektiran sheet baza tj. celije na njemu
X = kom.Cells(Rows.Count, 1).End(xlUp).Row + 1
'pronalazi prvi prazni red u stupcu A
Selection.Copy
'kopira selektirano
kom.Range("A" & X).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'zalijepi (paste) u prvu praznu celiju stupca A (prvi red)
Application.CutCopyMode = False
'prekida odabir selektiranog
kom.Columns("A").EntireColumn.AutoFit
'poravna po najduzem podatku u stupcu A
bza.Select
'selektira Sheet baza
End Sub

Ovaj Macro code ispod radi istu radnju kao i ovaj iznad

Sub KopirajSelektiranoOkomito1()
'kopiranje selektiranih celija sa jednog Sheet
'na drugi Sheet u okomitom raspordu bez praznih redova

Dim X As Long
'deklariranje varijable "X"
Dim c As Range
'deklariranje varijable "c"
Dim bza As Worksheet
'deklariranje varijable "bza"
Dim kom As Worksheet
'deklariranje varijable "kom"
Set bza = Worksheets("baza")
'postavljanje Sheet odakle kopiramo
Set kom = Worksheets("komada")
'postavljanje Sheet gdje kopiramo
X = kom.Cells(Rows.Count, 1).End(xlUp).Row + 1
'pronalazi prvi prazni red u stupcu A
For Each c In Selection
'za svaku celiju iz selekcije
kom.Cells(X, 1) = c
'prenosi vrijednosti bez formata u slijedeci red prvog stupca
X = X + 1
'row+1
Next
Sheets("baza").Select
'Vraca se na sheet baza
End Sub

Na vama je još da Kreirate button koji će pokrenuti Macro code


Kopiranje određenog raspona na drugi list bez praznih redova (Copy range without blank rows to another Sheet)

U ovom primjeru imamo raspon (range) ćelija u koje unosimo nekakve podatke. U odnosu na naš unos podataka u nekoj drugoj tablici pomoću formula imamo željene rezultate. želimo te rezultate dobivene formulama kopirati na drugi Sheet2 ali tako da se kopiraju bez praznih redova jedan ispod drugoga. Kada napravimo novi unos opet želimo kopirati rezultate na drug Sheet2. U ovakvim slučajevima (zavisno od VBA Macro-a) kopiraju se svi podaci ali nam Excel javlja grešku #REF, što zavisi o Macro-u. Macro u ovom primjeru s obzirom da su rezultati dobiveni pomoću formula neće javiti grešku.

Dakle na Sheetu1 imamo unos podataka (vrijednosti) u stupcu B koje trebamo nakon završenog unosa kopirati na Sheet2. Naši rezultati pojavljuju se u rasponu (range) D2:E7.

Na Sheetu2 uočite kopirane podatke nakon klika na button Copy. Nakon kopiranja prvih podataka unosimo druge podatke i opet klik na button Copy. Ovi naknadni podaci kopirat će se u prvi prazan red ispod već kopiranih i to opet bez praznih redova (nonblank cells or rows)

Macro code za ovaj primjer kopiranja raspona ćelija (tablice) bez praznih redova na drugi Sheet glasi. Kopirajte ga u Module vaše Workbook.

Sub CopyWithNonBlanksRow()
Dim NR As Long
Dim InS As Worksheet
Dim OuS As Worksheet
Dim newRow As Integer
Dim colIndex As Integer
Dim rowIndex As Integer
Dim dataRange As Range

Set InS = Sheets("Sheet1")
Set OuS = Sheets("Sheet2")
Set dataRange = InS.Range("D2:E7")
'raspon koji treba kopirati a sadrži formule
NR = OuS.Range("A" & Rows.Count).End(xlUp).Row + 1

For rowIndex = 1 To dataRange.Rows.Count
If Application.CountIf(dataRange.Rows(rowIndex), "") < dataRange.Columns.Count Then
dataRange.Rows(rowIndex).Copy
OuS.Range("A" & NR).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
NR = NR + 1
End If
Next rowIndex
Sheets("Sheet1").Select
'pozicionira se na Sheet1
Application.CutCopyMode = False
'ukida odabranu selekciju
Range("A2").Select
'pozicionira se na celiju na Sheetu1
End Sub

Na vama je još da Kreirate button koji će pokrenuti Macro code


Kopiranje podataka iz stupca (raspona) na istom Sheetu bez praznih redova (nonblank row)

U ovom primjeru imamo raspon (range) ćelija u koje unosimo nekakve podatke. Želimo određeni raspon ćelija kopirati u neki stupac ali bez praznih redova (non-blank row).

Dakle na Sheetu1 imamo unos podataka (vrijednosti) u stupcu B koje trebamo nakon završenog unosa kopirati u sitom Sheetu u neki stupac.

Nakon klika na button Copy naši podaci se kopiraju u destinacijski stupac

Macro code za ovaj primjer kopiranja raspona ćelija (tablice) bez praznih redova na drugi Sheet glasi. Kopirajte ga u Module vaše Workbook.

Sub KopirajNonBlankRow()
Dim Source As Range
Dim Dest As Range

Set Source = ActiveSheet.Range("B1:B20")
Set Dest = ActiveSheet.Range("E1")
CopyValuesWithoutBlank Source, Dest
End Sub

Sub CopyValuesWithoutBlank(rngSource As Range, clDest As Range)
' rngSource je kolona sa vrednostima koje se kopiraju
' Kopiraju se samo neprazne celije pocevsi od clDest
' autor JPeca

Dim cl As Variant
For Each cl In rngSource
If Len(cl.Text) > 0 Then
'je li blanko
clDest.Value = cl.Value
Set clDest = clDest.Offset(1)
'slijedeci red
End If
Next cl
End Sub

Na vama je još da Kreirate button koji će pokrenuti Macro code


Kopiranje određenog raspona na drugi sheet u istom formatu tablice

Ako želite kopirati neki raspon podataka na drugi Sheet u istom formatu tablice tada iskoristite VBA Macro code iz ovog primjera.

Imamo podatke koje upisujemo za određena imena. Želimo da u istom formatu kopiramo raspone tablice (range) na drugi Sheet2. Svako kopiranje treba dodati u novi red ispod već postojećih podataka.

Ovako izgledaju kopirani podaci. Slijedeće kopiranje bit će dodano ispod u prvi prazan red

Macro code za ovaj primjer kopiranja raspona ćelija (tablice) bez praznih redova na drugi Sheet glasi. Kopirajte ga u Module vaše Workbook. Broj jedan (1) u sedmoj liniji koda određuje prvi destinacijski stupac. Tako je broj 1 = A, 2 = B, 3 = C...

Sub KopirajUprvuPraznuCeliju()
Dim rNextCl As Range
'deklariranje varijable rNextCl

Range("A2:B10").Select
'range za kopiranje na Sheetu1 jer sa njega pokrecemo Macro
Selection.Copy
'kopira selektirani range
Sheets("Sheet2").Select
'pozicioniranje na Sheet2
Set rNextCl = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
'pronalazi prvi prazan red na destinaciji u stupcu A (broj 1) na Sheet2 uz pomak (offset) jednog reda
Worksheets("Sheet2").Activate
'aktiviranje Sheet2
rNextCl.Select
'pronalazi destinaciju
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
'ljepljenje kopiranoga
Sheets("Sheet1").Select
'pozicioniranje na Sheet1
Application.CutCopyMode = False
'ukidanje selektiranog raspona
Range("B2").Select
'pozicionira se na ćeliju B2 na Sheet1
End Sub

 

Adsense sponzor



Na vama je još da Kreirate button koji će pokrenuti Macro code


Ovo je Macro kod koji odrađuje isti posao kao i prethodni VBA Macro. Slovo A u kodu označava prvi stupac na Sheetu2 u koji će se kopirati podaci iz raspona. Kao što znate (ako ne znate tada pogledajte tutorijal VBA programiranje u Excelu, kod svojstva Offset(1, 0) prvi broj označava Row a drugi Column [Offset(Row, Column)]. U ovom slučaju broj jedan (1) označava pomak (Offset) od jednog reda na Sheetu2 tj. prvi prazan red.

Sub KopirajRangeUprviPrazanRed()

Worksheets("Sheet1").Range("A2:B10").Copy
'selektira i kopira zadati raspon podataka na Sheetu1
Worksheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
'pozicionira se u prvi prazan red na Sheetu2 u stupac A i lijepi podatke iz raspona
Sheets("Sheet1").Select
'pozicioniranje na Sheet1
Application.CutCopyMode = False
'ukidanje selektiranog raspona
Range("B2").Select
'pozicionira se na ćeliju B2 na Sheet1
End Sub


.



Na jednom mjestu popis svih tema vezanih za kopiranje (copy) u Excelu: Tutorijali vezani za radnje kopiranja u Excelu


Adsense sponzor




©- 2006 - 2018 - IvanC  - Sva prava pridržana.  ic.ims.hr