#excel #vba
#excel #vba
Вопрос:
Я пытаюсь добавить данные из столбца AG1 на нескольких листах на одном новом листе.
(например: worksheet1 в столбец A, worksheet2 в столбец B и т. Д.).
Sub Macro1()
'
' Macro1 Macro
'
'
Sheet1.Activate
Range("AG2:AG5000").Select
Selection.Copy
Sheets("Try").Select
Range("A1").Select
ActiveSheet.Paste
Sheets2.Activate
Range("AG2:AG5000").Select
Selection.Copy
Sheets("Try").Select
Range("B1").Select
ActiveSheet.Paste
End Sub
Пока я просто могу использовать макрос из «записать макрос».
Проблемы заключаются в следующем:
(1) количество листов всегда разное,
(2) название каждого листа всегда разное.
Комментарии:
1. Что вы пробовали? Пожалуйста, включите код, который вы придумали до сих пор, в свой вопрос.
2. «в одну строку на новом листе» не соответствует «worksheet1 в столбец A, …». Что вы хотите «Объединить»? Строки или столбцы? Означает ли это «Объединение» копирование каждого столбца на новый лист?
3. @braX извините, забыл ввести свой код
4. @FaneDuru моя ошибка, я сожалею
5. @FaneDuru может быть, правильное слово — «собирать». Да, я пытаюсь скопировать 1 диапазон всех существующих листов на листе «Попробовать». Возможно, мне сначала нужно узнать о макросах, прежде чем задавать здесь вопрос, но я не знаю, что я хочу делать
Ответ №1:
Попробуйте использовать приведенные ниже коды.
Sub CopyFromMultiple()
Dim sh As Worksheet
Dim pColumn As Long
pColumn = 1
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> "Try" Then
sh.Range("AG2:AG5000").Copy Sheets("Try").Cells(1, pColumn)
pColumn = pColumn 1
End If
Next
End Sub
Ответ №2:
Попробуйте следующий способ, пожалуйста:
Sub testCollectingColData()
Dim sh As Worksheet, shTr As Worksheet, arr As Variant, colNo As Long
Set shTr = Worksheets("Try")
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> shTr.Name Then
colNo = colNo 1
arr = sh.Range("AG2:AG5000").Value
shTr.Range(shTr.cells(1, colNo), shTr.cells(5000 - 1, colNo)).Value = arr
End If
Next
End Sub