Объединение таблиц Excel в одну таблицу
Хорошо, я пытался найти похожие вопросы, но я не очень понимал, о чем идет речь, так как я впервые смотрю на редактор VBA в Excel.
Проще говоря, у меня есть 2 таблицы: «Лист1» и «Лист2»
Лист 1:
A B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
Лист 2:
A B
1 Header1 Header2
2 Text3 Info3
3 Text4 Info4
И я хотел бы иметь макрос для объединения двух листов в новый лист (Sheet3), например:
A B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
4 Text3 Info3
5 Text4 Info4
Я попытался записать макрос и сохранить его для дальнейшего использования. Для этого я создал новый лист, скопировал / вставил все с Sheet1 на Sheet3, затем скопировал всю информацию, кроме заголовков с Sheet2 на Sheet3.
Ну, макрос работает для этих данных, но я обнаружил, что код, сгенерированный Excel, делает это так, что он выбирает ячейку A4 (здесь) перед вставкой данных. Хотя это работает для этих данных, оно не будет работать, если количество записей на каждом листе будет меняться время от времени. В основном,
1) Мне было интересно, существует ли функция, которая автоматически переходит к последней соответствующей ячейке перед вставкой следующего набора данных (в этом примере ячейка A4, и если у меня есть еще одна таблица, то ячейка A6).
2) Я видел функцию «ActiveCell.SpecialCells (xlLastCell) .Select» (активируется, когда я использую Ctrl + End), но она переносит меня в конец листа. Мне нужно что-то похожее на клавиши со стрелками «Домой» и «Вниз» после использования этой функции, чтобы это работало лучше.
Любой из этих вариантов будет хорошо со мной. ^ _ ^
Вот мой текущий код VBA, записанный с Macro Recorder в 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
Надеюсь, я не забыл ни одной полезной информации. Дайте мне знать, если я сделал!