Стоит задача сделать все цены с девяткой на конце. Например, не 1004 рубля, а 999 рублей или не 946 рублей, а 949. Корректирование цены возможно в пределах от 1 до 50 рублей. Какую формулу или макрос можно использовать?
Стоит задача сделать все цены с девяткой на конце. Например, не 1004 рубля, а 999 рублей или не 946 рублей, а 949. Корректирование цены возможно в пределах от 1 до 50 рублей. Какую формулу или макрос можно использовать?Orange02
Сообщение отредактировал Orange02 - Понедельник, 26.09.2016, 23:35
Pelena, Благодарю! Все чудесно сработало. Округлять и в большую и в меньшую сторону - что ближе. А как превратить это в макрос, который потенциально может работать с любыми столбцами и строкой?
Pelena, Благодарю! Все чудесно сработало. Округлять и в большую и в меньшую сторону - что ближе. А как превратить это в макрос, который потенциально может работать с любыми столбцами и строкой?Orange02
Сообщение отредактировал Orange02 - Понедельник, 26.09.2016, 23:49
Спасибо всем ответившим! Выручили совсем новичка. Остается вопрос - можно ли сделать скрипт для колонки с ценами или лучше обязать менеджеров использовать формулу вручную?
Спасибо всем ответившим! Выручили совсем новичка. Остается вопрос - можно ли сделать скрипт для колонки с ценами или лучше обязать менеджеров использовать формулу вручную?Orange02
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(1)) Is Nothing Then Application.ScreenUpdating = False Application.EnableEvents = False Dim lr&
lr = Cells(Rows.Count, 1).End(xlUp).Row 'для столбца В Range("b2", Cells(Rows.Count, "b").End(xlUp)).ClearContents Range("b2:b" & lr).FormulaR1C1 = "=MROUND(RC[-1],50)-1" 'для столбца С Range("c2", Cells(Rows.Count, "c").End(xlUp)).ClearContents Range("c2:c" & lr).FormulaR1C1 = "=TRUNC(RC[-2]-5,-1)+9"
Application.ScreenUpdating = True Application.EnableEvents = True End If End Sub
[/vba] Но зачем? Формулы простые, их можно протянуть сразу на много строк (с запасом). Чтобы для пустых ячеек не выводился результат, можно обернуть формулу в
Код
=ЕСЛИ(A2;формула;"")
Или форматировать данные, как таблицу (Вкладка Главная-Стили-Форматировать, как таблицу), тогда формула сама будет протягиваться.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(1)) Is Nothing Then Application.ScreenUpdating = False Application.EnableEvents = False Dim lr&
lr = Cells(Rows.Count, 1).End(xlUp).Row 'для столбца В Range("b2", Cells(Rows.Count, "b").End(xlUp)).ClearContents Range("b2:b" & lr).FormulaR1C1 = "=MROUND(RC[-1],50)-1" 'для столбца С Range("c2", Cells(Rows.Count, "c").End(xlUp)).ClearContents Range("c2:c" & lr).FormulaR1C1 = "=TRUNC(RC[-2]-5,-1)+9"
Application.ScreenUpdating = True Application.EnableEvents = True End If End Sub
[/vba] Но зачем? Формулы простые, их можно протянуть сразу на много строк (с запасом). Чтобы для пустых ячеек не выводился результат, можно обернуть формулу в
Код
=ЕСЛИ(A2;формула;"")
Или форматировать данные, как таблицу (Вкладка Главная-Стили-Форматировать, как таблицу), тогда формула сама будет протягиваться.