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

Вход

Регистрация

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

 

= Мир MS Excel/копия диапазона ячеек с новосозданного листа в имеющийся - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » копия диапазона ячеек с новосозданного листа в имеющийся (Макросы/Sub)
копия диапазона ячеек с новосозданного листа в имеющийся
Exceltseba Дата: Вторник, 22.09.2015, 23:39 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2010
Добрый день, уважаемые умы програмиирования VBA.

Помогите решить задачку:

Имеется таблица, которая постоянно увеличивается шаблонными листами (Лист1,2,3, n) в этой же таблице имеется лист в котором куски этих данных собираются (лист 4) как итоговые.
Пробовал все делать через функцию =двссыл вставляя только названия новых листов, но так как количество строк в каждом листе может отличатся - ничего не получается.

Также с товарищем пробовали писать макрос, но в итоге он копирует все данные со всех листов, а мне нужно, чтобы он копировал данные только тех листов, которые еще не вписаны в итоговую таблицу (лист4)

Пример прилагаю. Макрос запускаю дабл кликом.

Буду рад любому решению, а то уже пальцы стесал Ctrl+C Ctrl+V))
К сообщению приложен файл: 9398174.xlsx (18.9 Kb)
 
Ответить
СообщениеДобрый день, уважаемые умы програмиирования VBA.

Помогите решить задачку:

Имеется таблица, которая постоянно увеличивается шаблонными листами (Лист1,2,3, n) в этой же таблице имеется лист в котором куски этих данных собираются (лист 4) как итоговые.
Пробовал все делать через функцию =двссыл вставляя только названия новых листов, но так как количество строк в каждом листе может отличатся - ничего не получается.

Также с товарищем пробовали писать макрос, но в итоге он копирует все данные со всех листов, а мне нужно, чтобы он копировал данные только тех листов, которые еще не вписаны в итоговую таблицу (лист4)

Пример прилагаю. Макрос запускаю дабл кликом.

Буду рад любому решению, а то уже пальцы стесал Ctrl+C Ctrl+V))

Автор - Exceltseba
Дата добавления - 22.09.2015 в 23:39
Exceltseba Дата: Вторник, 22.09.2015, 23:45 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2010
Ага, еще забыл добавить. Текущий макрос перебирает листы, которые находятся слева от итогового, а мне желательно, чтобы перебирались листы по всей книге. Можно ли этот вопрос решить через переназывание новых листов, например ЛистСтат1,ЛистСтат2,ЛистСтат3 и ЛистСтатn...

Заранее благодарен за внимание и оказанную помощь
 
Ответить
СообщениеАга, еще забыл добавить. Текущий макрос перебирает листы, которые находятся слева от итогового, а мне желательно, чтобы перебирались листы по всей книге. Можно ли этот вопрос решить через переназывание новых листов, например ЛистСтат1,ЛистСтат2,ЛистСтат3 и ЛистСтатn...

Заранее благодарен за внимание и оказанную помощь

Автор - Exceltseba
Дата добавления - 22.09.2015 в 23:45
KSV Дата: Среда, 23.09.2015, 01:00 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Доброй ночи!
Как вариант: [vba]
Код
Private Sub CopyData()
     Dim sh As Worksheet
     For Each sh In Worksheets
         If sh.Name <> "ИТОГ" Then
             If Right$(sh.Name, 1) <> "." Then
                 sh.Name = sh.Name & "."
                 sh.Range("A2:F" & sh.Cells(Rows.Count, 1).End(xlUp).Row).Copy Worksheets("ИТОГ").Cells(Rows.Count, 1).End(xlUp).Offset(1)
             End If
         End If
     Next
End Sub
[/vba] (в конце имени скопированного листа добавляется точка, чтоб следующий раз не обрабатывать его повторно)
К сообщению приложен файл: 9398174.xlsb (18.3 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДоброй ночи!
Как вариант: [vba]
Код
Private Sub CopyData()
     Dim sh As Worksheet
     For Each sh In Worksheets
         If sh.Name <> "ИТОГ" Then
             If Right$(sh.Name, 1) <> "." Then
                 sh.Name = sh.Name & "."
                 sh.Range("A2:F" & sh.Cells(Rows.Count, 1).End(xlUp).Row).Copy Worksheets("ИТОГ").Cells(Rows.Count, 1).End(xlUp).Offset(1)
             End If
         End If
     Next
End Sub
[/vba] (в конце имени скопированного листа добавляется точка, чтоб следующий раз не обрабатывать его повторно)

Автор - KSV
Дата добавления - 23.09.2015 в 01:00
Exceltseba Дата: Среда, 23.09.2015, 01:27 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2010
Спасибо, KSV, очень хорошо все разложили - вот что значит свежий взгляд)).

А можно ли прописать макрос так, чтобы он мог анализировать только те листы, имя котоорых начинается например на X, например Х1,Х2,Х3, Хn.

Дело в том, что в книге имеется еще с десяток иного рода листов и макрос скопирует данные с них тоже.

Помогите, пожалуйста.
 
Ответить
СообщениеСпасибо, KSV, очень хорошо все разложили - вот что значит свежий взгляд)).

А можно ли прописать макрос так, чтобы он мог анализировать только те листы, имя котоорых начинается например на X, например Х1,Х2,Х3, Хn.

Дело в том, что в книге имеется еще с десяток иного рода листов и макрос скопирует данные с них тоже.

Помогите, пожалуйста.

Автор - Exceltseba
Дата добавления - 23.09.2015 в 01:27
Manyasha Дата: Среда, 23.09.2015, 10:26 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Exceltseba, в макросе KSV в строчку [vba]
Код
If Right$(sh.Name, 1) <> "." Then
[/vba]добавьте еще одно условие:[vba]
Код
If Right$(sh.Name, 1) <> "." And Left(sh.Name, 1) = "X" Then
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеExceltseba, в макросе KSV в строчку [vba]
Код
If Right$(sh.Name, 1) <> "." Then
[/vba]добавьте еще одно условие:[vba]
Код
If Right$(sh.Name, 1) <> "." And Left(sh.Name, 1) = "X" Then
[/vba]

Автор - Manyasha
Дата добавления - 23.09.2015 в 10:26
Exceltseba Дата: Среда, 23.09.2015, 10:43 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2010
Огромнейшее спасибо!! Все сработало!!!

Только появилась другая проблемка - листы, которые макрос переназвал с помощью функции =двссыл передавали данные на другие листы, а теперь связи оборвались т.к. изменено имя ... полезли ошибки повсюду(((

Можно ли макрос настроить так, чтобы небыло переименования или мы возвращаемся к первоначальному вопросу? Или проще будет перепровести =двссыл.... только из по меньшей мере 100 шт...

Что посоветуете?
 
Ответить
СообщениеОгромнейшее спасибо!! Все сработало!!!

Только появилась другая проблемка - листы, которые макрос переназвал с помощью функции =двссыл передавали данные на другие листы, а теперь связи оборвались т.к. изменено имя ... полезли ошибки повсюду(((

Можно ли макрос настроить так, чтобы небыло переименования или мы возвращаемся к первоначальному вопросу? Или проще будет перепровести =двссыл.... только из по меньшей мере 100 шт...

Что посоветуете?

Автор - Exceltseba
Дата добавления - 23.09.2015 в 10:43
Manyasha Дата: Среда, 23.09.2015, 11:24 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Exceltseba, вот так попробуйте (поигралась с кодом Сергея ( KSV))
[vba]
Код
Private Sub CopyData()
     Dim sh As Worksheet
     Dim check
     For Each sh In Worksheets
         If sh.Name <> "ИТОГ" Then
             check = WorksheetFunction.CountIf(Columns("H:H"), sh.Name)
             If check = 0 And Left(sh.Name, 1) = "X" Then
                 With Worksheets("ИТОГ")
                     sh.Range("A2:F" & sh.Cells(Rows.Count, 1).End(xlUp).Row).Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
                     lr = .Cells(.Rows.Count, 1).End(xlUp).Row
                     Worksheets("ИТОГ").Range("H" & lr - sh.Cells(Rows.Count, 1).End(xlUp).Row + 2 & ":H" & lr) = sh.Name
                 End With
             End If
         End If
     Next
End Sub
[/vba]
К сообщению приложен файл: 939817.xlsb (19.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеExceltseba, вот так попробуйте (поигралась с кодом Сергея ( KSV))
[vba]
Код
Private Sub CopyData()
     Dim sh As Worksheet
     Dim check
     For Each sh In Worksheets
         If sh.Name <> "ИТОГ" Then
             check = WorksheetFunction.CountIf(Columns("H:H"), sh.Name)
             If check = 0 And Left(sh.Name, 1) = "X" Then
                 With Worksheets("ИТОГ")
                     sh.Range("A2:F" & sh.Cells(Rows.Count, 1).End(xlUp).Row).Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
                     lr = .Cells(.Rows.Count, 1).End(xlUp).Row
                     Worksheets("ИТОГ").Range("H" & lr - sh.Cells(Rows.Count, 1).End(xlUp).Row + 2 & ":H" & lr) = sh.Name
                 End With
             End If
         End If
     Next
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 23.09.2015 в 11:24
Exceltseba Дата: Среда, 23.09.2015, 13:04 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2010
Получается, отлично,

Подскажите пожалуйста, а можно ли вставлять данные полученные с листов Х в в другой диапазон ячеек, отличный от а2:F в листе "ИТОГ"?
 
Ответить
СообщениеПолучается, отлично,

Подскажите пожалуйста, а можно ли вставлять данные полученные с листов Х в в другой диапазон ячеек, отличный от а2:F в листе "ИТОГ"?

Автор - Exceltseba
Дата добавления - 23.09.2015 в 13:04
Manyasha Дата: Среда, 23.09.2015, 13:24 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Exceltseba, меняйте вот этот кусок:[vba]
Код
.Cells(.Rows.Count, 1).End(xlUp).Offset(1)
[/vba]
1 в Cells(.Rows.Count, 1) - это номер столбца.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеExceltseba, меняйте вот этот кусок:[vba]
Код
.Cells(.Rows.Count, 1).End(xlUp).Offset(1)
[/vba]
1 в Cells(.Rows.Count, 1) - это номер столбца.

Автор - Manyasha
Дата добавления - 23.09.2015 в 13:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » копия диапазона ячеек с новосозданного листа в имеющийся (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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