Здравствуйте уважаемые форумчане! Помогите, пожалуйста. Мне необходимо в файле Excel с листов 1, 2, 3 скопировать определенные столбцы (с 1 по 23) (на каждом из листов 1, 2 и 3, столбцы находятся в одинаковой последовательности) на лист СВОД. Я нашла макрос, который просто копирует ВСЕ листы из книги на новый лист. Как мне его подкорректировать, чтобы я могла копировать только конкретные листы и только конкретные столбцы? Еще я заметила, что макрос копирует на сводный лист полностью таблицу с заголовками. Мне копирование каждый раз заголовков не нужно. И таблицы с копируемых листов (1, 2, 3) – это умные таблицы. Пример исходного файла и желаемого результата во вложении. Пример макроса ниже. Заранее благодарю за ответ! [vba]
Код
Sub Combine() 'Update by Extendoffice Dim i As Integer Dim xTCount As Variant Dim xWs As Worksheet On Error Resume Next LInput: xTCount = Application.InputBox("The number of title rows", "", "1") If TypeName(xTCount) = "Boolean" Then Exit Sub If Not IsNumeric(xTCount) Then MsgBox "Only can enter number", , "Kutools for Excel" GoTo LInput End If Set xWs = ActiveWorkbook.Worksheets.Add(Sheets(1)) xWs.Name = "Свод" Worksheets(2).Range("A1").EntireRow.Copy Destination:=xWs.Range("A1") For i = 2 To Worksheets.Count Worksheets(i).Range("A1").CurrentRegion.Offset(CInt(xTCount), 0).Copy _ Destination:=xWs.Cells(xWs.UsedRange.Cells(xWs.UsedRange.Count).Row + 1, 1) Next End Sub
[/vba]
Здравствуйте уважаемые форумчане! Помогите, пожалуйста. Мне необходимо в файле Excel с листов 1, 2, 3 скопировать определенные столбцы (с 1 по 23) (на каждом из листов 1, 2 и 3, столбцы находятся в одинаковой последовательности) на лист СВОД. Я нашла макрос, который просто копирует ВСЕ листы из книги на новый лист. Как мне его подкорректировать, чтобы я могла копировать только конкретные листы и только конкретные столбцы? Еще я заметила, что макрос копирует на сводный лист полностью таблицу с заголовками. Мне копирование каждый раз заголовков не нужно. И таблицы с копируемых листов (1, 2, 3) – это умные таблицы. Пример исходного файла и желаемого результата во вложении. Пример макроса ниже. Заранее благодарю за ответ! [vba]
Код
Sub Combine() 'Update by Extendoffice Dim i As Integer Dim xTCount As Variant Dim xWs As Worksheet On Error Resume Next LInput: xTCount = Application.InputBox("The number of title rows", "", "1") If TypeName(xTCount) = "Boolean" Then Exit Sub If Not IsNumeric(xTCount) Then MsgBox "Only can enter number", , "Kutools for Excel" GoTo LInput End If Set xWs = ActiveWorkbook.Worksheets.Add(Sheets(1)) xWs.Name = "Свод" Worksheets(2).Range("A1").EntireRow.Copy Destination:=xWs.Range("A1") For i = 2 To Worksheets.Count Worksheets(i).Range("A1").CurrentRegion.Offset(CInt(xTCount), 0).Copy _ Destination:=xWs.Cells(xWs.UsedRange.Cells(xWs.UsedRange.Count).Row + 1, 1) Next End Sub
Добрый день. Спасибо Вам большое! Подскажите, пожалуйста, как можно на копируемый лист добавить в самую первую строку заголовки столбцов? Мне нужно чтобы первый раз заголовок скопировался, а далее со второго третьего листа уже не копировался заголовок.
Добрый день. Спасибо Вам большое! Подскажите, пожалуйста, как можно на копируемый лист добавить в самую первую строку заголовки столбцов? Мне нужно чтобы первый раз заголовок скопировался, а далее со второго третьего листа уже не копировался заголовок.Vika101928
на копируемый лист добавить в самую первую строку заголовки столбцов
Код будет чуть отличаться:[vba]
Код
Option Explicit
Sub СводныеДанные_для_Vika101928_v2() Dim wsTarget As Worksheet Dim wsSource As Worksheet Dim arrData As Variant Dim lastRowSrc As Long Dim i As Long
With ThisWorkbook.Worksheets("СВОД") .Range("A1:W" & .Rows.Count).ClearContents End With
Dim sheetNames As Variant sheetNames = Array("1", "2", "3")
Dim lastRowTgt As Long lastRowTgt = 2
For i = LBound(sheetNames) To UBound(sheetNames) Set wsSource = ThisWorkbook.Sheets(sheetNames(i)) lastRowSrc = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row If lastRowSrc < 2 Then GoTo NextSheet
If i = 0 Then ThisWorkbook.Worksheets("СВОД").Range("A1:W1").Value = wsSource.Range("A1:W1").Value End If
на копируемый лист добавить в самую первую строку заголовки столбцов
Код будет чуть отличаться:[vba]
Код
Option Explicit
Sub СводныеДанные_для_Vika101928_v2() Dim wsTarget As Worksheet Dim wsSource As Worksheet Dim arrData As Variant Dim lastRowSrc As Long Dim i As Long
With ThisWorkbook.Worksheets("СВОД") .Range("A1:W" & .Rows.Count).ClearContents End With
Dim sheetNames As Variant sheetNames = Array("1", "2", "3")
Dim lastRowTgt As Long lastRowTgt = 2
For i = LBound(sheetNames) To UBound(sheetNames) Set wsSource = ThisWorkbook.Sheets(sheetNames(i)) lastRowSrc = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row If lastRowSrc < 2 Then GoTo NextSheet
If i = 0 Then ThisWorkbook.Worksheets("СВОД").Range("A1:W1").Value = wsSource.Range("A1:W1").Value End If