Добрый день, дорогие форумчане! Оффтоп: я задаю вопросы, получаю ответы, и редко когда соизволяю отблагодарить. Прошу прощения у тех, кому не удосужилась сказать "Спасибо". Нет практически ни одного вопроса, в котором бы я не получила здесь ответа! Спасибо всем огромное!
У меня прайс, позиции которого, формируются формулами. См. файл. Суть в том, что на листе "Прайс" я удаляю из пустых ячеек формулы. Соответственно, при добавлении/удалении позиций (на листе "Исходник") происходит смещение данных в листе "Прайс". Можно ли как-то автоматически распространить (скопировать) формулы, чтобы все позиции вернулись на свои места? Строк почти 9 тыс. При ручном распространении формул на весь диапазон, Excel выдает ошибку, что данных очень много. Можно ли макросом это миновать?
Добрый день, дорогие форумчане! Оффтоп: я задаю вопросы, получаю ответы, и редко когда соизволяю отблагодарить. Прошу прощения у тех, кому не удосужилась сказать "Спасибо". Нет практически ни одного вопроса, в котором бы я не получила здесь ответа! Спасибо всем огромное!
У меня прайс, позиции которого, формируются формулами. См. файл. Суть в том, что на листе "Прайс" я удаляю из пустых ячеек формулы. Соответственно, при добавлении/удалении позиций (на листе "Исходник") происходит смещение данных в листе "Прайс". Можно ли как-то автоматически распространить (скопировать) формулы, чтобы все позиции вернулись на свои места? Строк почти 9 тыс. При ручном распространении формул на весь диапазон, Excel выдает ошибку, что данных очень много. Можно ли макросом это миновать?yuka
Sub ertert() Dim x, i& With Sheets("Исходник") x = .Range("A1:F" & .Cells(Rows.Count, 4).End(xlUp).Row).Value End With For i = 1 To UBound(x) If Len(x(i, 4)) Then x(i, 4) = x(i, 4) & ", " & x(i, 5) x(i, 5) = x(i, 6) Next i With Sheets("Прайс") Intersect(.UsedRange, .Columns("A:E")).ClearContents .Range("A1:E1").Resize(i - 1).Value = x End With End Sub
[/vba] т.е. если Исходник изменился, то нужно нажать кнопку "Обновить"
Здрасьте попробуйте так, вообще без формул [vba]
Код
Sub ertert() Dim x, i& With Sheets("Исходник") x = .Range("A1:F" & .Cells(Rows.Count, 4).End(xlUp).Row).Value End With For i = 1 To UBound(x) If Len(x(i, 4)) Then x(i, 4) = x(i, 4) & ", " & x(i, 5) x(i, 5) = x(i, 6) Next i With Sheets("Прайс") Intersect(.UsedRange, .Columns("A:E")).ClearContents .Range("A1:E1").Resize(i - 1).Value = x End With End Sub
[/vba] т.е. если Исходник изменился, то нужно нажать кнопку "Обновить"nilem