Добрый день. Создалась такая проблема. Есть порядка 30 страниц идентичных. Но на каждой странице разное количество строк и могут повторяться данные. Нужно все строки со всех листов вывести на одном листе по порядку начиная с первого листа. Файл накопительный, данные по строкам будут постоянно меняться на любом листе. Для примера файл прикреплен как должно выглядеть.
Добрый день. Создалась такая проблема. Есть порядка 30 страниц идентичных. Но на каждой странице разное количество строк и могут повторяться данные. Нужно все строки со всех листов вывести на одном листе по порядку начиная с первого листа. Файл накопительный, данные по строкам будут постоянно меняться на любом листе. Для примера файл прикреплен как должно выглядеть.Macist
Sub u_741() Application.ScreenUpdating = False u_1 = Sheets("свод").Cells(Rows.Count, 1).End(xlUp).Row If u_1 > 1 Then Sheets("свод").Range("a2:e" & u_1).Clear For Elem = 2 To Sheets.Count u_2 = Sheets(Elem).Name u_3 = Sheets(u_2).Cells(Rows.Count, 1).End(xlUp).Row u_4 = Sheets("свод").Cells(Rows.Count, 1).End(xlUp).Row + 1 If u_3 > 1 Then Sheets(u_2).Range("a2:e" & u_3).Copy Sheets("свод").Range("a" & u_4) End If Next Elem Application.ScreenUpdating = True End Sub
[/vba] [p.s.]клятые американцы - им не приходится менять раскладку клавы[/p.s.]
как-то так, наверное [vba]
Код
Sub u_741() Application.ScreenUpdating = False u_1 = Sheets("свод").Cells(Rows.Count, 1).End(xlUp).Row If u_1 > 1 Then Sheets("свод").Range("a2:e" & u_1).Clear For Elem = 2 To Sheets.Count u_2 = Sheets(Elem).Name u_3 = Sheets(u_2).Cells(Rows.Count, 1).End(xlUp).Row u_4 = Sheets("свод").Cells(Rows.Count, 1).End(xlUp).Row + 1 If u_3 > 1 Then Sheets(u_2).Range("a2:e" & u_3).Copy Sheets("свод").Range("a" & u_4) End If Next Elem Application.ScreenUpdating = True End Sub
[/vba] [p.s.]клятые американцы - им не приходится менять раскладку клавы[/p.s.]Nic70y
До кучи вариант при помощи запроса Power Query: [vba]
Код
let Source = Excel.Workbook(File.Contents( Excel.CurrentWorkbook(){[Name="Path"]}[Content]{0}[Column1] ), null, true), FilteredRows = Table.SelectRows(Source, each ([Name] <> "свод") and ([Kind] = "Sheet")), Data = Table.Combine( List.Transform( FilteredRows[Data], Table.PromoteHeaders ) ) in Data
[/vba] Есть ограничения, т.к. запрос читает данные с диска, то перед обновлением таблицы обязательно нужно сохранить файл, чтобы записались изменения на листах с числами. Чтобы обновить данные нужно на зеленой табличке листа свод кликнуть правой кнопкой и в выпавшем меню выбрать пункт "обновить".
До кучи вариант при помощи запроса Power Query: [vba]
Код
let Source = Excel.Workbook(File.Contents( Excel.CurrentWorkbook(){[Name="Path"]}[Content]{0}[Column1] ), null, true), FilteredRows = Table.SelectRows(Source, each ([Name] <> "свод") and ([Kind] = "Sheet")), Data = Table.Combine( List.Transform( FilteredRows[Data], Table.PromoteHeaders ) ) in Data
[/vba] Есть ограничения, т.к. запрос читает данные с диска, то перед обновлением таблицы обязательно нужно сохранить файл, чтобы записались изменения на листах с числами. Чтобы обновить данные нужно на зеленой табличке листа свод кликнуть правой кнопкой и в выпавшем меню выбрать пункт "обновить".PooHkrd