Доброго времени суток, уважаемые форумчане! Оптимизирую и по-мере сил ускоряю рабочую табличку. В таблице работает макрос ГСЧ на основе макроса из выполнение двух генераторов СЧ без промежуточных ячеек. Сгенерированные макросом диапазоны чисел далее округляются по условию: если значение ячейки <10, то округление до целого числа, если <100, то кратно 10, во всех остальных случаях кратно 100. Использую формулу для одной ячейки
(для остальных ячеек диапазона аналогично). Вопрос в следующем... Можно ли данную формулу реализовать макросом и соответственно интегрировать в существующий макрос? Самому написать не получается, собственных знаний пока хватило только слегка адаптировать ГСЧ от Kuzmich(а). Во вложении пример с рабочим макросом, как хотелось бы чтобы это работал.
Доброго времени суток, уважаемые форумчане! Оптимизирую и по-мере сил ускоряю рабочую табличку. В таблице работает макрос ГСЧ на основе макроса из выполнение двух генераторов СЧ без промежуточных ячеек. Сгенерированные макросом диапазоны чисел далее округляются по условию: если значение ячейки <10, то округление до целого числа, если <100, то кратно 10, во всех остальных случаях кратно 100. Использую формулу для одной ячейки
(для остальных ячеек диапазона аналогично). Вопрос в следующем... Можно ли данную формулу реализовать макросом и соответственно интегрировать в существующий макрос? Самому написать не получается, собственных знаний пока хватило только слегка адаптировать ГСЧ от Kuzmich(а). Во вложении пример с рабочим макросом, как хотелось бы чтобы это работал.Markovich
Для диапазона 1 значение ячейки <10, то округление до целого числа, Для диапазона 2 и 3 значение ячейки >100, то округление кратно 100 Вместо ваших 3-циклов используйте один [vba]
Для диапазона 1 значение ячейки <10, то округление до целого числа, Для диапазона 2 и 3 значение ячейки >100, то округление кратно 100 Вместо ваших 3-циклов используйте один [vba]
Kuzmich, большое спасибо за помощь! Но решение немного неверное: изначально, в диапазонах для генератора 1 (ячейки C5 - H5) числа могут быть абсолютно разные, например, в диапазоне 1 3000-15000, в диапазоне 2 50-300, в диапазоне 3 1-50, по условиям округления они равнозначные. И в условиях округления, также нужно, чтобы если число двухзначное, то кратно 10. Т.е. в общем виде: 1-9 без округления, 10-99 кратно 10, 100 и выше кратно 100. Хотелось бы функцию ЕСЛИМН реализовать в макросе
Цитата
Вместо ваших 3-циклов используйте один
Здорово, сам не додумался бы так сделать
Kuzmich, большое спасибо за помощь! Но решение немного неверное: изначально, в диапазонах для генератора 1 (ячейки C5 - H5) числа могут быть абсолютно разные, например, в диапазоне 1 3000-15000, в диапазоне 2 50-300, в диапазоне 3 1-50, по условиям округления они равнозначные. И в условиях округления, также нужно, чтобы если число двухзначное, то кратно 10. Т.е. в общем виде: 1-9 без округления, 10-99 кратно 10, 100 и выше кратно 100. Хотелось бы функцию ЕСЛИМН реализовать в макросе
Sub iRound() Select Case cell Case Is < 10 cell = WorksheetFunction.Round(cell, 0) Case 10 To 100 cell = WorksheetFunction.Round(cell, -1) Case Is > 100 cell = WorksheetFunction.Round(cell, -2) End Select End Sub
Sub iRound() Select Case cell Case Is < 10 cell = WorksheetFunction.Round(cell, 0) Case 10 To 100 cell = WorksheetFunction.Round(cell, -1) Case Is > 100 cell = WorksheetFunction.Round(cell, -2) End Select End Sub