Страницы: 1
RSS
Как собрать данные с разных листов, с определенных столбцов в отдельную книгу, Собрать данные с разных листов, с определенных столбцов в отдельную книгу
 
Здравствуйте!
Перерыла все на данном сайте, думала найду ответ на свой вопрос, но не получилось  :cry:
Возможно, вы или подскажите, где можно почитать или помогите, пожалуйста, решить задачу.
Нужен универсальный макрос.
Есть файл в котором на данный момент 79 листов с разным количеством столбцов и строк (прикрепила пример, состоящий из трех листов) количество листов периодически добавляется.
В отдельный файл со всех листов необходимо собирать информацию, начиная с 11 строки, со столбцов В, С (эти столбцы на всех листах одинаковые) и столбец "ПОЛНОЕ НАИМЕНОВАНИЕ" (этот столбец "плавающий")
 
Откройте свой файл с 79 листами. Откройте этот файл с макросом. Нажмите кнопку на листе, укажите нужный файл (да/нет), будет создана новая книга с данными.
 
Изящненько..
Я на коленке собрал сначала в том же воркбуке на Лист "All", а потом потом подумал что обновлять и содержать это вообще уныло будет.

В задаче про плавающую колонку не очень понятно - на примерах она последняя всегда. Но на всякий случай вкрутил перебор для поиска.
Код
Sub collect_info()

Dim ws As Worksheet, LastColumn As Long, LR As Long, LR_ALL As Long, All As Worksheet

Set All = ActiveWorkbook.Worksheets("All")

For Each ws In ActiveWorkbook.Worksheets

If ws.Name = "All" Then
GoTo finish
Else

LastColumn = ws.Cells(11, ws.Columns.Count).End(xlToLeft).Column

LR = ws.Cells(ws.Rows.Count, 3).End(xlUp).Row

LR_ALL = All.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1

ws.Range("B11:C" & LR).Copy _
    Destination:=All.Range("A" & LR_ALL)
End If

For i = 1 To LastColumn

If ws.Cells(1, i).Value = "ПОЛНОЕ НАИМЕНОВАНИЕ" Then

ws.Range(ws.Cells(11, i), ws.Cells(LR, i)).Copy

All.Range("C" & LR_ALL).PasteSpecial xlPasteValues

End If

Next i

finish:
Next

End Sub

Изменено: Alex T. - 08.02.2021 00:59:26
 
Марина Киладзе,

Попробуйте, может подойдёт частично или полностью решить вашу задачу вот этими готовыми решениями:

https://www.planetaexcel.ru/plex/features/17/263/

или

https://excelvba.ru/programmes/FilenamesWithValues

Мне близкую к вашей задачу помог макросом решить JayBhagavan:

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=111383&TITLE_SEO=111383-avtomatizirovannyy-perenos-opredelyennogo-fragmenta-dokumenta-word-v-t&MID=924810&user_name=Olga+H.&date_last_visit1=&date_last_visit2=&sort=NUM_POSTS&set_filter=%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80#message924810

Специально настроенный парсер, предполагаю, также поможет решить вашу задачу.

Так что предлагаю:

1)попробовать готовые надстройки.

2)написать под вашу задачу макрос.

3)настроить под вашу задачу и запустить парсер.

 
Вау, круто....огромное Вам спасибо, а можно в макрос еще один столбец добавить, чтобы понимать с какого листа он подтянул инфу.?
 
Цитата
Alex T. написал:
If ws.Cells(1, i).Value = "ÏÎËÍÎÅ ÍÀÈÌÅÍÎÂÀÍÈÅ" Then

Не забывайте переключать раскладку клавиатуры на РУССКИЙ язык перед копированием кода из редактора VBE на форум
 
New,Вау, круто, то что надо ....а можно еще один столбец добавить "Название листа", чтобы понимать с какого листа тянется информация?
 
См. файл
 
New,Тысяча раз спасибо, за то что откликнулись и за помощь. Я все это формулами собирала, а файл стал таким огромным, что пересчет длится очень долго.....а теперь вы меня просто спасли.
Страницы: 1
Наверх