Добрый день! В общем нужно скопировать таблицы со всех листов на один общий. Но сложность в том, что данные в ячейках появляются согласно формулам. Нужно скопировать так чтоб копировались только значения и формат ячеек (то есть размер и цвет), но не получается. Применил этот макрос, но там копируется вместе с формулами. На листах информация может изменяться, так же строки добавляться. И возможно ли такое решить без макроса? [vba]
Код
Sub Макрос1() Dim LastRow As Long, RW As Long, n As Long RW = Cells(Rows.Count, 5).End(xlUp).Row Range(Cells(3, 1), Cells(RW + 2, 16)).Clear RW = 3 For n = 1 To Sheets.Count - 1 With Sheets(n) LastRow = .Cells(Rows.Count, 5).End(xlUp).Row Range(.Cells(3, 1), .Cells(LastRow, 16)).Copy Cells(RW, 1) RW = Cells(Rows.Count, 5).End(xlUp).Row + 1 End With Next End Sub
[/vba]
Добрый день! В общем нужно скопировать таблицы со всех листов на один общий. Но сложность в том, что данные в ячейках появляются согласно формулам. Нужно скопировать так чтоб копировались только значения и формат ячеек (то есть размер и цвет), но не получается. Применил этот макрос, но там копируется вместе с формулами. На листах информация может изменяться, так же строки добавляться. И возможно ли такое решить без макроса? [vba]
Код
Sub Макрос1() Dim LastRow As Long, RW As Long, n As Long RW = Cells(Rows.Count, 5).End(xlUp).Row Range(Cells(3, 1), Cells(RW + 2, 16)).Clear RW = 3 For n = 1 To Sheets.Count - 1 With Sheets(n) LastRow = .Cells(Rows.Count, 5).End(xlUp).Row Range(.Cells(3, 1), .Cells(LastRow, 16)).Copy Cells(RW, 1) RW = Cells(Rows.Count, 5).End(xlUp).Row + 1 End With Next End Sub
NikitaDvorets, Спасибо, получилось как надо, но чу чуть не то. Если дважды нажать на СВОД, то повторно все таблицы добавятся к текущей сводной таблицы. Это придется перед каждым внесением изменений в таблицы на листах удалять сводную таблицу на общем листе и нажимать на кнопку СВОД один раз. Можно ли сделать так что бы при нажатии на кнопку СВОД(повторно) добавлялись к текущей сводной таблице только произведенные изменения в таблицах на отдельных листах?
NikitaDvorets, Спасибо, получилось как надо, но чу чуть не то. Если дважды нажать на СВОД, то повторно все таблицы добавятся к текущей сводной таблицы. Это придется перед каждым внесением изменений в таблицы на листах удалять сводную таблицу на общем листе и нажимать на кнопку СВОД один раз. Можно ли сделать так что бы при нажатии на кнопку СВОД(повторно) добавлялись к текущей сводной таблице только произведенные изменения в таблицах на отдельных листах?Vlad9826
добавлялись к текущей сводной таблице только произведенные изменения в таблицах на отдельных листах
Можно, но нужно согласовать один момент. Новые диапазоны можно обозначать знаком "+" в дополнительном столбце ("A"). См. лист 78 прилагаемого файла. Но это придется делать каждый раз для новых данных. Макрос можно заставить стирать эти "+", которые уже учтены после отработки диапазонов.
Vlad9826,
Цитата
добавлялись к текущей сводной таблице только произведенные изменения в таблицах на отдельных листах
Можно, но нужно согласовать один момент. Новые диапазоны можно обозначать знаком "+" в дополнительном столбце ("A"). См. лист 78 прилагаемого файла. Но это придется делать каждый раз для новых данных. Макрос можно заставить стирать эти "+", которые уже учтены после отработки диапазонов.NikitaDvorets
NikitaDvorets, можно и так, но а если придется удалить строку из таблице на листе, как себя макрос в таком случае поведет? он удалить эту строку в сводной таблице
NikitaDvorets, можно и так, но а если придется удалить строку из таблице на листе, как себя макрос в таком случае поведет? он удалить эту строку в сводной таблицеVlad9826
Vlad9826, Если удалить строку без "+" на листе, макрос её не "увидит" и не внесет в свод (если нет "+", то строка уже отработана). Если удалить строку с "+" (зачем?), то макрос её тоже не увидит. Макрос (исправленный) будет переносить в свод только те строки на рабочих листах, которые помечены "+" в столбце "A".
Vlad9826, Если удалить строку без "+" на листе, макрос её не "увидит" и не внесет в свод (если нет "+", то строка уже отработана). Если удалить строку с "+" (зачем?), то макрос её тоже не увидит. Макрос (исправленный) будет переносить в свод только те строки на рабочих листах, которые помечены "+" в столбце "A".NikitaDvorets
Vlad9826, continued... Прилагаю вариант, позволяющий макросу вносить в свод только новые записи с листов, отмеченные "+" в столбцах "A". После внесения в свод "+" затираются.
Vlad9826, continued... Прилагаю вариант, позволяющий макросу вносить в свод только новые записи с листов, отмеченные "+" в столбцах "A". После внесения в свод "+" затираются.NikitaDvorets
NikitaDvorets, спасибо уже близко к цели, но есть несколько нюансов)) Новая строчка добавляется в конец таблицы на общем листе, а не в конец таблицы касающейся (к примеру 78) на общем листе. И второе, при изменении (допустим номера какого либо агрегата), не происходит обновление в сводной таблице.
NikitaDvorets, спасибо уже близко к цели, но есть несколько нюансов)) Новая строчка добавляется в конец таблицы на общем листе, а не в конец таблицы касающейся (к примеру 78) на общем листе. И второе, при изменении (допустим номера какого либо агрегата), не происходит обновление в сводной таблице.Vlad9826