Добрый день! В общем нужно скопировать таблицы со всех листов на один общий. Но сложность в том, что данные в ячейках появляются согласно формулам. Нужно скопировать так чтоб копировались только значения и формат ячеек (то есть размер и цвет), но не получается. Применил этот макрос, но там копируется вместе с формулами. На листах информация может изменяться, так же строки добавляться. И возможно ли такое решить без макроса?
Sub Макрос1() Dim LastRow AsLong, RW AsLong, n AsLong
RW = Cells(Rows.Count, 5).End(xlUp).Row
Range(Cells(3, 1), Cells(RW + 2, 16)).Clear
RW = 3 For n = 1To 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 EndWith Next EndSub
Добрый день! В общем нужно скопировать таблицы со всех листов на один общий. Но сложность в том, что данные в ячейках появляются согласно формулам. Нужно скопировать так чтоб копировались только значения и формат ячеек (то есть размер и цвет), но не получается. Применил этот макрос, но там копируется вместе с формулами. На листах информация может изменяться, так же строки добавляться. И возможно ли такое решить без макроса?
Sub Макрос1() Dim LastRow AsLong, RW AsLong, n AsLong
RW = Cells(Rows.Count, 5).End(xlUp).Row
Range(Cells(3, 1), Cells(RW + 2, 16)).Clear
RW = 3 For n = 1To 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 EndWith Next EndSub
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