Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменить макрос для объединения всех листов в один - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Изменить макрос для объединения всех листов в один
Pashkovets Дата: Вторник, 18.09.2018, 05:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Есть макрос

[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 - Вторник, 18.09.2018, 07:43
 
Ответить
СообщениеДобрый день.
Есть макрос

[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
Дата добавления - 18.09.2018 в 05:44
китин Дата: Вторник, 18.09.2018, 07:14 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7034
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Pashkovets, оформите сообщение согласно п.3 правил форума в части применения тэгов. Пояснялка здесь


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеPashkovets, оформите сообщение согласно п.3 правил форума в части применения тэгов. Пояснялка здесь

Автор - китин
Дата добавления - 18.09.2018 в 07:14
Pelena Дата: Вторник, 18.09.2018, 07:48 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19513
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Ну если без файла, то попробуйте так
[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
[/vba]
Исправила немного


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816


Сообщение отредактировал Pelena - Вторник, 18.09.2018, 07:52
 
Ответить
СообщениеНу если без файла, то попробуйте так
[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
[/vba]
Исправила немного

Автор - Pelena
Дата добавления - 18.09.2018 в 07:48
Pashkovets Дата: Вторник, 18.09.2018, 08:14 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Просто шикарно! Спасибо большое. Вы спасли мой рабочий день. Я теперь успею сдать проект в срок.
Извините, что сразу не правильно оформила тему и сообщение.
Удачного Вам дня!!
 
Ответить
СообщениеПросто шикарно! Спасибо большое. Вы спасли мой рабочий день. Я теперь успею сдать проект в срок.
Извините, что сразу не правильно оформила тему и сообщение.
Удачного Вам дня!!

Автор - Pashkovets
Дата добавления - 18.09.2018 в 08:14
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!