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

Вход

Регистрация

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

 

= Мир MS Excel/Сборка всех листов книги - Мир MS Excel

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

Excel 2010
Тема неоднократно поднималась, пробовал некоторые найденные макросы, но необходимого результата пока не получил.
Имеется файл со множеством листов (более 30), в каждом листе таблицы разных размеров (как в ширину, так и в высоту).
Необходимо собрать все листы на один с добавлением столбца, в котором содержится имя листа, с которого скопированы данные.
Желательно без сохранения формул, но с сохранением форматов.
В примере лист "Результат" - то, что нужно получить.
Заранее спасибо всем откликнувшимся.
К сообщению приложен файл: 2509981.xls (95.5 Kb)


QIWI 9173973973

Сообщение отредактировал Russel - Среда, 24.09.2014, 11:13
 
Ответить
СообщениеТема неоднократно поднималась, пробовал некоторые найденные макросы, но необходимого результата пока не получил.
Имеется файл со множеством листов (более 30), в каждом листе таблицы разных размеров (как в ширину, так и в высоту).
Необходимо собрать все листы на один с добавлением столбца, в котором содержится имя листа, с которого скопированы данные.
Желательно без сохранения формул, но с сохранением форматов.
В примере лист "Результат" - то, что нужно получить.
Заранее спасибо всем откликнувшимся.

Автор - Russel
Дата добавления - 24.09.2014 в 11:12
Rioran Дата: Среда, 24.09.2014, 11:57 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Russel, привет.

Пара уточнений:

1). Столбец В всегда можно использовать для поиска последней задействованной строки?
2). Строку 4 всегда можно использовать для поиска последнего задействованного столбца?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеRussel, привет.

Пара уточнений:

1). Столбец В всегда можно использовать для поиска последней задействованной строки?
2). Строку 4 всегда можно использовать для поиска последнего задействованного столбца?

Автор - Rioran
Дата добавления - 24.09.2014 в 11:57
Russel Дата: Среда, 24.09.2014, 13:07 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Rioran,
1) Для поиска последней задействованной строки можно использовать столбец А (№ п/п);
2) Можно для всех таблиц переносить 20 столбцов.


QIWI 9173973973
 
Ответить
СообщениеRioran,
1) Для поиска последней задействованной строки можно использовать столбец А (№ п/п);
2) Можно для всех таблиц переносить 20 столбцов.

Автор - Russel
Дата добавления - 24.09.2014 в 13:07
alex1248 Дата: Среда, 24.09.2014, 13:22 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 384
Репутация: 71 ±
Замечаний: 0% ±

Excel 2007, 2010
Для поиска последней задействованной строки можно использовать столбец А (№ п/п)

В 3-м листе последняя строка так не попадает.


skype alex12481632
Qiwi +79276708519
 
Ответить
Сообщение
Для поиска последней задействованной строки можно использовать столбец А (№ п/п)

В 3-м листе последняя строка так не попадает.

Автор - alex1248
Дата добавления - 24.09.2014 в 13:22
Russel Дата: Среда, 24.09.2014, 13:36 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
В 3-м листе последняя строка так не попадает.

Такие строки мне не нужны будут. Кроме того, в большинстве случаев будет ячейка вида ВСЕГО ФЕВРАЛЬ в столбце А


QIWI 9173973973
 
Ответить
Сообщение
В 3-м листе последняя строка так не попадает.

Такие строки мне не нужны будут. Кроме того, в большинстве случаев будет ячейка вида ВСЕГО ФЕВРАЛЬ в столбце А

Автор - Russel
Дата добавления - 24.09.2014 в 13:36
Rioran Дата: Среда, 24.09.2014, 14:28 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Russel, посмотри, это то что нужно?

[vba]
Код
Sub Rio_Runner()

'Author:    Roman Rioran Voronov
'Date:      the 24-th of September, 2014
'Feedback:  voronov_rv@mail.ru

'Purpose:   Gathering info from all sheets

Dim shtX As Worksheet 'For Results
Dim shtY As Worksheet 'To roll sheets
Dim X As Long 'Row where to place info
Dim Y As Long 'Rows from shtY

Set shtX = ThisWorkbook.Worksheets("Результат")
X = 1

Application.ScreenUpdating = False

For Each shtY In ThisWorkbook.Worksheets
     If shtY.Name <> shtX.Name Then
         With shtY
             Y = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
             shtX.Range("A" & X & ":A" & X + Y - 1).Value = shtY.Name
             .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 20)).Copy
             shtX.Cells(X, 2).PasteSpecial Paste:=-4122
             shtX.Cells(X, 2).PasteSpecial Paste:=12
             X = X + Y + 1
         End With
     End If
Next shtY

shtX.Columns.AutoFit
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub
[/vba]
К сообщению приложен файл: List_Gathering_.xlsm (42.1 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеRussel, посмотри, это то что нужно?

[vba]
Код
Sub Rio_Runner()

'Author:    Roman Rioran Voronov
'Date:      the 24-th of September, 2014
'Feedback:  voronov_rv@mail.ru

'Purpose:   Gathering info from all sheets

Dim shtX As Worksheet 'For Results
Dim shtY As Worksheet 'To roll sheets
Dim X As Long 'Row where to place info
Dim Y As Long 'Rows from shtY

Set shtX = ThisWorkbook.Worksheets("Результат")
X = 1

Application.ScreenUpdating = False

For Each shtY In ThisWorkbook.Worksheets
     If shtY.Name <> shtX.Name Then
         With shtY
             Y = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
             shtX.Range("A" & X & ":A" & X + Y - 1).Value = shtY.Name
             .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 20)).Copy
             shtX.Cells(X, 2).PasteSpecial Paste:=-4122
             shtX.Cells(X, 2).PasteSpecial Paste:=12
             X = X + Y + 1
         End With
     End If
Next shtY

shtX.Columns.AutoFit
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub
[/vba]

Автор - Rioran
Дата добавления - 24.09.2014 в 14:28
Russel Дата: Среда, 24.09.2014, 14:34 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Rioran, очень похоже, пошёл пробовать hands


QIWI 9173973973
 
Ответить
СообщениеRioran, очень похоже, пошёл пробовать hands

Автор - Russel
Дата добавления - 24.09.2014 в 14:34
Russel Дата: Среда, 24.09.2014, 14:42 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Rioran, если в таблице есть пустые строки - определяет их как конец таблицы (наверное надо воспользоваться решением из МШ для определения конца таблицы).
Желательно чтобы лист Результат создавался автоматически (таких файлов много, хочется максимально автоматизировать).


QIWI 9173973973
 
Ответить
СообщениеRioran, если в таблице есть пустые строки - определяет их как конец таблицы (наверное надо воспользоваться решением из МШ для определения конца таблицы).
Желательно чтобы лист Результат создавался автоматически (таких файлов много, хочется максимально автоматизировать).

Автор - Russel
Дата добавления - 24.09.2014 в 14:42
Rioran Дата: Среда, 24.09.2014, 14:45 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Russel, не совсем понял твою фразу про пустые строки. У меня поиск идёт прыжком снизу до первой непустой строки.

Создание листа добавляю, пока отвечаешь =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеRussel, не совсем понял твою фразу про пустые строки. У меня поиск идёт прыжком снизу до первой непустой строки.

Создание листа добавляю, пока отвечаешь =)

Автор - Rioran
Дата добавления - 24.09.2014 в 14:45
Russel Дата: Среда, 24.09.2014, 14:51 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Rioran, в реальном большом файле скопировались по 8-12 строк с каждого листа. При этом первая непустая ячейка в ст. А на всех листах как минимум 20-я


QIWI 9173973973
 
Ответить
СообщениеRioran, в реальном большом файле скопировались по 8-12 строк с каждого листа. При этом первая непустая ячейка в ст. А на всех листах как минимум 20-я

Автор - Russel
Дата добавления - 24.09.2014 в 14:51
Rioran Дата: Среда, 24.09.2014, 14:56 | Сообщение № 11
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
1) Для поиска последней задействованной строки можно использовать столбец А (№ п/п);

Давай взглянем на лист, с которого содрали только 8-12 строк.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение
1) Для поиска последней задействованной строки можно использовать столбец А (№ п/п);

Давай взглянем на лист, с которого содрали только 8-12 строк.

Автор - Rioran
Дата добавления - 24.09.2014 в 14:56
Russel Дата: Среда, 24.09.2014, 14:59 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Давай взглянем на лист, с которого содрали только 8-12 строк.

Меа кульпа - я уже начал вручную собирать и добавил везде пустой столбец с именем листа под шапкой. Избавился от столбца - все заработало!
Спасибо, дружище! hands beer respect


QIWI 9173973973
 
Ответить
Сообщение
Давай взглянем на лист, с которого содрали только 8-12 строк.

Меа кульпа - я уже начал вручную собирать и добавил везде пустой столбец с именем листа под шапкой. Избавился от столбца - все заработало!
Спасибо, дружище! hands beer respect

Автор - Russel
Дата добавления - 24.09.2014 в 14:59
Rioran Дата: Среда, 24.09.2014, 15:07 | Сообщение № 13
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Меа кульпа

Фух, от сердца отлегло =)

Во вложении доработанный макрос. Игнорирует страницы с пустым А столбцом и создаёт свой лист итогов.

[vba]
Код
Sub Rio_Runner()

'Author:    Roman Rioran Voronov
'Date:      the 24-th of September, 2014
'Feedback:  voronov_rv@mail.ru

'Purpose:   Gathering info from all sheets

Dim shtX As Worksheet 'For Results
Dim shtY As Worksheet 'To roll sheets
Dim X As Long 'Row where to place info
Dim Y As Long 'Rows from shtY

ThisWorkbook.Sheets.Add before:=Sheets(1)
Set shtX = ThisWorkbook.ActiveSheet
shtX.Name = "Allow_Me_To_Present_You_Totals"
X = 1

Application.ScreenUpdating = False

For Each shtY In ThisWorkbook.Worksheets
      If shtY.Name <> shtX.Name Then
          With shtY
              Y = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
              If Y <> 2 Then
                  shtX.Range("A" & X & ":A" & X + Y - 1).Value = shtY.Name
                  .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 20)).Copy
                  shtX.Cells(X, 2).PasteSpecial Paste:=-4122
                  shtX.Cells(X, 2).PasteSpecial Paste:=12
                  X = X + Y + 1
              End If
          End With
      End If
Next shtY

shtX.Columns.AutoFit
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub
[/vba]
П.С. Это нормально, что где-то у услуг по подаче вместо номера столбца пустая ячейка?
К сообщению приложен файл: 5843809.xlsm (46.9 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Среда, 24.09.2014, 15:10
 
Ответить
Сообщение
Меа кульпа

Фух, от сердца отлегло =)

Во вложении доработанный макрос. Игнорирует страницы с пустым А столбцом и создаёт свой лист итогов.

[vba]
Код
Sub Rio_Runner()

'Author:    Roman Rioran Voronov
'Date:      the 24-th of September, 2014
'Feedback:  voronov_rv@mail.ru

'Purpose:   Gathering info from all sheets

Dim shtX As Worksheet 'For Results
Dim shtY As Worksheet 'To roll sheets
Dim X As Long 'Row where to place info
Dim Y As Long 'Rows from shtY

ThisWorkbook.Sheets.Add before:=Sheets(1)
Set shtX = ThisWorkbook.ActiveSheet
shtX.Name = "Allow_Me_To_Present_You_Totals"
X = 1

Application.ScreenUpdating = False

For Each shtY In ThisWorkbook.Worksheets
      If shtY.Name <> shtX.Name Then
          With shtY
              Y = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
              If Y <> 2 Then
                  shtX.Range("A" & X & ":A" & X + Y - 1).Value = shtY.Name
                  .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 20)).Copy
                  shtX.Cells(X, 2).PasteSpecial Paste:=-4122
                  shtX.Cells(X, 2).PasteSpecial Paste:=12
                  X = X + Y + 1
              End If
          End With
      End If
Next shtY

shtX.Columns.AutoFit
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub
[/vba]
П.С. Это нормально, что где-то у услуг по подаче вместо номера столбца пустая ячейка?

Автор - Rioran
Дата добавления - 24.09.2014 в 15:07
Russel Дата: Четверг, 25.09.2014, 09:00 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
[offtop]
П.С. Это нормально, что где-то у услуг по подаче вместо номера столбца пустая ячейка?

Откровенно говоря, в этих файлах ничего нормального нет, приходится разбирать, разбираться и причесывать. Данные за 1997-99 годы, концов не сыщешь :D

[/offtop]


QIWI 9173973973

Сообщение отредактировал Russel - Четверг, 25.09.2014, 09:01
 
Ответить
Сообщение[offtop]
П.С. Это нормально, что где-то у услуг по подаче вместо номера столбца пустая ячейка?

Откровенно говоря, в этих файлах ничего нормального нет, приходится разбирать, разбираться и причесывать. Данные за 1997-99 годы, концов не сыщешь :D

[/offtop]

Автор - Russel
Дата добавления - 25.09.2014 в 09:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сборка всех листов книги (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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