Kako kopirati i sortirati podatke sa više
Sheets na jedan Sheet
(Copy and sort data from multiple Sheets to one Sheet (Summary)
Uzmimo situaciju da imate dva radna lista (Sheets)
AA i BB na kojima se nalaze podaci koje želite kopirati i
sortirati na trećem radnom listu CC (summary). Ovu radnju
možete odraditi pomoću VBA makronaredbe u prilogu. U slučaju
na slici ispod poatke sortiramo po stupcu A (po datumima). U
koliko prilagođavate ove makronaredbe svojim potrebama
obratite pažnju na nazive Sheets i raspone podataka. Name
Sheeta mijenjate u VBE sa pritiskom na F4.
Pokrenite VBE pritiskom na ALT+F11 i
kopirajte ovaj prvi Macro u
Module1.
Ovaj prvi skup VBA makronaredbi sastoji se od 5 procedura
koje su svaka zasebno a prve četiri se pozivaju u zadnjoj
proceduri "KOPIRAJ". Redoslijed mora biti kao što je
prikazan zbog slijeda operacija. Obratite pažnju na nazive
Sheets u lijevoj strani VBE izbornika.
PRVI NAČIN
Sub BRISI()
'1a BRISE PRETHODNE PODATKE
wsCC.Range("A1", Range("B1").End(xlDown)).ClearContents
End Sub
Sub AA_CC() '2a
KOPIRA SA "AA" NA "CC"
wsAA.Activate
Range("A1", Range("B1").End(xlDown)).Copy
'OD "A1" DO ZADNJEG
REDA
wsCC.Range("A1").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'VALUE
wsCC.Range("A1").PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'FORMAT
End Sub
Sub BB_CC() '3a
KOPIRA SA "BB" NA "CC"
wsBB.Activate
Dim xy As Integer
xy = wsCC.Range("A1").End(xlDown).Row + 1
'prvi prazan red u "CC"
Range("A2", Range("B2").End(xlDown)).Copy
'OD "A2" DO ZADNJEG
REDA
wsCC.Range("A" & xy).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'VALUE
wsCC.Range("A" & xy).PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'FORMAT
End Sub
Sub SORT() '4a
SORTRA "CC" - PO DATUMU
wsCC.Activate
Range("A2:B1000").SORT Key1:=Range("A2"),
Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("A1").Select
End Sub
Sub KOPIRAJ() '
1)BRISE "CC", 2)KOPIRA "AA_CC", 3)KOPIRA "BB_CC", 4)SORTIRA
"CC"
Application.ScreenUpdating = False
Call BRISI 'poziva
proceduru 1a
Call AA_CC 'poziva
proceduru 2a
Call BB_CC 'poziva
proceduru 3a
Call SORT 'poziva
proceduru 4a
End Sub
Ovoj zadnjoj makronaredbi
pridružite button.
DRUGI NAČIN
Ovaj prethodni primjer može se odraditi
pomoću makronaredbe ispod, koja objedinjuje sve procedure u
jednoj. Uočite sličnosti sa prethodnom ali sve
spakovano u jednu proceduru
Sub Copy_Sort() 'jedan
macro koji radi sve
Application.ScreenUpdating = False
'---------------------------------------------------------------------------------------------------
wsCC.Range("A1", Range("B1").End(xlDown)).ClearContents
'1 - BRISI SVE u A i B
stupcu
'---------------------------------------------------------------------------------------------------
wsAA.Activate
'2 - KOPIRA SA "AA" NA "CC"
Range("A1", Range("B1").End(xlDown)).Copy
'OD "A1" DO ZADNJEG
REDA
wsCC.Range("A1").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'VALUE
wsCC.Range("A1").PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'FORMAT
'----------------------------------------------------------------------------------------------------
wsBB.Activate '3 -
KOPIRA SA "BB" NA "CC"
Dim xy As Integer
xy = wsCC.Range("A1").End(xlDown).Row + 1
'prvi prazan red u "CC"
Range("A2", Range("B2").End(xlDown)).Copy
'OD "A2" DO ZADNJEG
REDA
wsCC.Range("A" & xy).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'VALUE
wsCC.Range("A" & xy).PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'FORMAT
'-----------------------------------------------------------------------------------------------------
wsCC.Activate
'4 - SORTRA "CC" - PO A STUPCU
Range("A2:B1000").SORT Key1:=Range("A2"),
Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("A1").Select
'pozicionira se na celiju A1 na Sheetu CC
'---------------------------------------------
End Sub
DRUGAČIJI - DRUGI NAČIN -
Kopiranja sa više radnih listova
Ovdje obratite pažnju da je ova VBA
makronaredba ista kao prethodna ali su drugačiji nazivi
radnih listova
|
|
Sub Copy_Sort2()
'jedan macro koji radi sve u jednom potezu
Application.ScreenUpdating = False
'---------------------------------------------------------------------------------------------------
Sheets("CC").Range("A1", Range("B1").End(xlDown)).ClearContents
'1 - BRISI SVE u A i B
'---------------------------------------------------------------------------------------------------
Sheets("AA").Activate
'2 - KOPIRA SA "AA" NA "CC"
Range("A1", Range("B1").End(xlDown)).Copy
'OD "A1" DO ZADNJEG
REDA
Sheets("CC").Range("A1").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'VALUE
Sheets("CC").Range("A1").PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'FORMAT
'----------------------------------------------------------------------------------------------------
Sheets("BB").Activate
'3 - KOPIRA SA "BB" NA "CC"
Dim xy As Integer
xy = Sheets("CC").Range("A1").End(xlDown).Row
+ 1 'prvi prazan red u
"CC"
Range("A2", Range("B2").End(xlDown)).Copy
'OD "A2" DO ZADNJEG
REDA
Sheets("CC").Range("A" & xy).PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,
Transpose:=False 'VALUE
Sheets("CC").Range("A" & xy).PasteSpecial
Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False,
Transpose:=False
'FORMAT
'-----------------------------------------------------------------------------------------------------
Sheets("CC").Activate
'4 - SORTRA "CC" - PO A
STUPCU
Range("A2:B1000").Sort Key1:=Range("A2"), Order1:=xlAscending,
Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("A1").Select
'pozicionira se na celiju A1
na Sheetu CC
'---------------------------------------------
End Sub
TREĆI NAČIN
Ovaj treći način je nepopularan ali također
odrađuje ono što nam treba. Ova VBA makronaredba snimljena
je pomoću Excelovog VBA (Record
Macro)
Sub Macro1()
'kopiranje sa sheets
AA i BB na sheet CC
'nakon ljepljenja sortiranje po stupcu A ili datumu
'vrijedi samo ako je range određen za dotične raspone A2:B20
'pozicioniranje na
sheet AA
Sheets("AA").Select
'pozicioniranje na sheet AA
Range("A2:B20").Select
'selektiranje range A2:B20
Selection.Copy
'naredba za kopiranje
'pozicioniranje na
sheet CC
Sheets("CC").Select
'pozicioniranje na sheet CC
Range("A2").Select
'selektiranje ćelije A2 na
sheetu CC kao prve za ljepljenje podataka
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
'ljepljenje kopiranih
podataka
'pozicioniranje na
sheet BB
Sheets("BB").Select
'pozicioniranje na sheet BB
Range("A2:B20").Select
'selektiranje range A2:B20
Application.CutCopyMode = False
'poništavanje prethodno
selektiranog range
Selection.Copy
'naredba za kopiranje
'pozicioniranje na
sheet CC
Sheets("CC").Select
'pozicioniranje na sheet CC
Range("A21").Select
'pozicioniranje na ćeliju A21
sheeta CC
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
'ljepljenje kopiranih
podataka
Range("A1:B50").Select
'selektiranje raspona ili
range A1:B50 na sheetu CC jer se nalazimo na njemu
Application.CutCopyMode = False
'sortiranje podataka
po stupcu A na sheetu CC, podaci se nalaze u rasponu A2:A20
ActiveWorkbook.Worksheets("CC").SORT.SortFields.Clear
ActiveWorkbook.Worksheets("CC").SORT.SortFields.Add
Key:=Range("A2:A20" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("CC").SORT
.SetRange Range("A1:B20")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
'pozicionira se na celiju A1
na Sheetu CC
End Sub |
|
Na jednom mjestu popis svih tema vezanih
za kopiranje (copy) u Excelu:
Tutorijali vezani za radnje
kopiranja u Excelu |