Sub Svod_grup() Application.ScreenUpdating = 0 cal_ = Application.Calculation Application.Calculation = xlCalculationManual With Sheets("svod") Range(.Range("A2"), .Range("A2").SpecialCells(xlLastCell)).ClearContents End With For i = 1 To Sheets.Count sn_ = Sheets(i).Name If sn_ <> "SVOD" Then If Not LCase(sn_) Like "удаленка*" Then r1_ = WorksheetFunction.Max(2, Sheets("SVOD").Range("A" & Rows.Count).End(xlUp).Row) If r1_ > 2 Then r1_ = r1_ + 3 r11_ = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row With Sheets("SVOD").Range("A" & r1_).Resize(r11_ - 1) .Value = Sheets(i).Name .Offset(, 1).Value = Sheets(i).Range("A2").Resize(r11_ - 1).Value End With End If End If Next i Application.Calculation = cal_ Application.ScreenUpdating = 1 End Sub
[/vba]
Он собирает одну колонку со всех листов и делает пробел между листами 2 строки. Мне нужно чтобы он собирал 15 колонок (или все без разницы) и делал пробел 3 строки. Помогите пожалуйста.
Добрый день. Есть макрос
[vba]
Код
Sub Svod_grup() Application.ScreenUpdating = 0 cal_ = Application.Calculation Application.Calculation = xlCalculationManual With Sheets("svod") Range(.Range("A2"), .Range("A2").SpecialCells(xlLastCell)).ClearContents End With For i = 1 To Sheets.Count sn_ = Sheets(i).Name If sn_ <> "SVOD" Then If Not LCase(sn_) Like "удаленка*" Then r1_ = WorksheetFunction.Max(2, Sheets("SVOD").Range("A" & Rows.Count).End(xlUp).Row) If r1_ > 2 Then r1_ = r1_ + 3 r11_ = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row With Sheets("SVOD").Range("A" & r1_).Resize(r11_ - 1) .Value = Sheets(i).Name .Offset(, 1).Value = Sheets(i).Range("A2").Resize(r11_ - 1).Value End With End If End If Next i Application.Calculation = cal_ Application.ScreenUpdating = 1 End Sub
[/vba]
Он собирает одну колонку со всех листов и делает пробел между листами 2 строки. Мне нужно чтобы он собирал 15 колонок (или все без разницы) и делал пробел 3 строки. Помогите пожалуйста.Pashkovets
Сообщение отредактировал Pashkovets - Вторник, 18.09.2018, 07:43
Sub Svod_grup() Application.ScreenUpdating = 0 cal_ = Application.Calculation Application.Calculation = xlCalculationManual With Sheets("svod") Range(.Range("A2"), .Range("A2").SpecialCells(xlLastCell)).Resize(,15).ClearContents End With For i = 1 To Sheets.Count sn_ = Sheets(i).Name If sn_ <> "SVOD" Then If Not LCase(sn_) Like "удаленка*" Then r1_ = WorksheetFunction.Max(2, Sheets("SVOD").Range("A" & Rows.Count).End(xlUp).Row) If r1_ > 2 Then r1_ = r1_ + 4 r11_ = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row With Sheets("SVOD").Range("A" & r1_).Resize(r11_ - 1, 15) .Value = Sheets(i).Name .Offset(, 1).Value = Sheets(i).Range("A2").Resize(r11_ - 1, 15).Value End With End If End If Next i Application.Calculation = cal_ Application.ScreenUpdating = 1 End Sub
[/vba] Исправила немного
Ну если без файла, то попробуйте так [vba]
Код
Sub Svod_grup() Application.ScreenUpdating = 0 cal_ = Application.Calculation Application.Calculation = xlCalculationManual With Sheets("svod") Range(.Range("A2"), .Range("A2").SpecialCells(xlLastCell)).Resize(,15).ClearContents End With For i = 1 To Sheets.Count sn_ = Sheets(i).Name If sn_ <> "SVOD" Then If Not LCase(sn_) Like "удаленка*" Then r1_ = WorksheetFunction.Max(2, Sheets("SVOD").Range("A" & Rows.Count).End(xlUp).Row) If r1_ > 2 Then r1_ = r1_ + 4 r11_ = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row With Sheets("SVOD").Range("A" & r1_).Resize(r11_ - 1, 15) .Value = Sheets(i).Name .Offset(, 1).Value = Sheets(i).Range("A2").Resize(r11_ - 1, 15).Value End With End If End If Next i Application.Calculation = cal_ Application.ScreenUpdating = 1 End Sub
Просто шикарно! Спасибо большое. Вы спасли мой рабочий день. Я теперь успею сдать проект в срок. Извините, что сразу не правильно оформила тему и сообщение. Удачного Вам дня!!
Просто шикарно! Спасибо большое. Вы спасли мой рабочий день. Я теперь успею сдать проект в срок. Извините, что сразу не правильно оформила тему и сообщение. Удачного Вам дня!!Pashkovets