porządku, starałem się spojrzeć na podobne pytania, ale nie bardzo rozumiem, co się przedmiotem dyskusji, ponieważ jest to pierwszy raz, kiedy patrzę na edytorze VBA Excel.Łączące arkusze kalkulacyjne Excel w jeden arkusz
W prostych słowach, mam 2 arkusze: "Arkusz1" i "Arkusz2"
Arkusz 1:
A B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
Arkusz 2:
A B
1 Header1 Header2
2 Text3 Info3
3 Text4 Info4
I chciałbym mieć makro scalić dwa arkusze do nowego arkusza (Arkusz3) tak:
A B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
4 Text3 Info3
5 Text4 Info4
Próbowałem nagrać makro i zapisać go do późniejszego wykorzystania. Aby to zrobić, utworzyłem nowy arkusz, skopiuj/wklej wszystko z arkusza1 do arkusza3, a następnie skopiuj wszystkie informacje z wyjątkiem nagłówków z arkusza2 do arkusza3.
Cóż, makro umożliwia dostęp na tych danych, ale okazało się, że kod wygenerowany przez program Excel czyni go tak wybiera komórki A4 (tutaj) przed wklejeniem danych. Chociaż działa to dla tych danych, nie działałoby, gdyby liczba rekordów w każdym arkuszu zmieniała się od czasu do czasu. Zasadniczo
1) Zastanawiałem się, czy istnieje funkcja, która idzie do ostatniej odpowiedniej komórce automatycznie przed wklejeniem kolejny zestaw danych (w tym przykładzie, komórka A4, a jeśli mam jeszcze jedną tabelę, a następnie komórki A6).
2) Widziałem funkcję "ActiveCell.SpecialCells (xlLastCell). Wybierz" (aktywowany, gdy używam Ctrl + End), ale to prowadzi mnie do końca arkusza. Potrzebuję czegoś podobnego do klawiszy strzałek "Dom" i "Dół" po użyciu tej funkcji, aby działała najlepiej.
Albo jedna z tych opcji będzie dobrze ze mną.^_^
Oto mój aktualny kod VBA nagrany z rejestratora makr w programie Excel 2010:
Sub Collate_Sheets()
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = "Sheet3"
Sheets("Sheet1").Select
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
ActiveCell.SpecialCells(xlLastCell).Select
' I need to select one cell below, and the cell in column A at this point
Sheets("Sheet2").Select
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
End Sub
Mam nadzieję, że nie zapomniał o każdą użyteczną informację. Daj mi znać, jeśli tak zrobiłem!
Och dzięki Doug! Nie wiedziałem, że na forum wybrano odpowiednie podświetlanie składni ^^; – Jerry
Aby uzyskać rząd poniżej ostatniej prawdziwie używanej komórki, możesz napisać 'Range (" A "i Rows.Count) .End (xlup) .Offset (1)'. Zastąp '" A "' dowolną kolumną, której potrzebujesz. –
Nie ma za co, Jerry. Aby uzyskać wyróżnienie, po prostu zaznacz swój kod, a następnie kliknij ikonę kodu u góry. Wygląda jak '{}'. –