Jacek Mucha

Jacek Mucha Specjalista GNSS/GIS

Temat: Makro: kopiowanie zakresu o stałych rozmiarach do pustego...

Witajcie. Rozglądałem się po forum tym i innych, w razie czego proszę odeślijcie mnie gdzie trzeba. Na VBA się nie znam, właściwie teraz uczę się, ponieważ jest taka potrzeba.

Mam dane ułożone w kolumnach od A do XY w pierwszych 22. wierszach. Kolumna A jest stała a w następnych są parami ułożone zestawy danych. Chcę więc skopiować n zakresów danych o stałych rozmiarach (np. B1:C22, D1:E22, itd) i wklejać je pod sobą automatycznie w nowym arkuszu.

Znalazłem makro, które zaznacza zakres i wkleja go do pierwszego wolnego wiersza w arkuszu:

Sub KOPIOWANIE ZAKRESOW()
Dim PierwszyWolny As Long

ActiveSheet.UsedRange

PierwszyWolny = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row + 1

Sheets("dane parami w kolejnych kolumnach").Range("B1:C22").Copy
ActiveSheet.Cells(PierwszyWolny, "B").PasteSpecial
ActiveSheet.Cells(PierwszyWolny, "B").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ActiveCell.Select

End Sub


Pytanie brzmi: jak to zrobić, żeby makro przesunęło samo po skopiowaniu zakresu danych nr 1 ten zakres do komórek C1:D22, skopiowało zawartość do pierwszego wolnego wiersza w docelowym arkuszu i robiło tak dalej, dopóki w arkuszu źródłowym nie dojdzie do ostatniego zestawu danych, czyli ostatnich dwóch kolumn XX i XY?Ten post został edytowany przez Autora dnia 28.06.16 o godzinie 20:31
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Makro: kopiowanie zakresu o stałych rozmiarach do pustego...

Dość niecodzienne aby dane parować w grupach kolumnami. Zwykle staraj się budować jednolitą bazę aby potem mieć podstawę do utworzenia tabeli przestawnej która daje możliwość lepszej filtracji danych, grupowania jak i obliczeń na wartościach numerycznych.

Zobacz takie, gotowe rozwiązania:
http://vbatools.pl/konsolidowanie-zakresow/
http://vbatools.pl/laczenie-danych-z-tabel/
http://vbatools.pl/laczenie-skoroszytow/
http://vbatools.pl/laczenie-arkuszy/

Jeśli chodzi o modyfikacje twojego/znalezionego kodu, opartego na 2grupach to wystarczy tylko wywołać go 2 razy zmieniając adres kopiowania (czyli przekopiować linijki kodu 2x i zmodyfikować adres).

Jeśli grup jest więcej to kopiowanie nie ma sensu, więc musisz poznać jak działa pętla. I ją zapisać tak aby jej zmienna służyła do podawania adresów w kolumnach.

Przykałd:
Dim y&
For y = 1 To Cells(1, "X").Column Step 2
Debug.Print "adres:" & Range(Cells(1, y), Cells(22, y + 1)).Address 'wynik w oknie immediate Ctrl+G
Next y


Dalej kombinuj sam.Ten post został edytowany przez Autora dnia 29.06.16 o godzinie 09:47

Następna dyskusja:

VBA - makro - wielokrotne k...




Wyślij zaproszenie do