Страницы: 1
RSS
Имитация формулы ОКРУГЛТ() в виде макроса
 
Здравствуйте.

Есть такая формула ОКРУГЛТ - это округление числа - до определенного числа разрядов. Например 1284 - будет округлено до 1200 - данной формулой.
Посоветуйте - как сымитировать вот эту формулу - в виде макроса (там еще формула случайного числа есть)  ?
Код
=ОКРУГЛТ(Y8*СЛЧИС();100)
 
Цитата
OlegSmirnov написал:
как сымитировать
Я правильно понимаю, что надо сделать так, чтоб функция делал вид что работает также, но на самом деле ничего не делала.
По вопросам из тем форума, личку не читаю.
 
Цитата
OlegSmirnov написал:
это округление числа - до определенного числа разрядов.
НЕПРАВДА!
Читайте справку по данной функции!
Цитата
OlegSmirnov написал:
Например 1284 - будет округлено до 1200 - данной формулой.
=ОКРУГЛТ(1284;100)
вернет 1300; а
=ОКРУГЛТ(1284;99)
вернет 1287
и, напоследок,
=ОКРУГЛТ(1284;1,3)
вернет 1284,4
Изменено: Михаил Витальевич С. - 14.02.2019 13:47:13
 
БМВ, как макросом заменить эту формулу и вывести результат - например в ячейке B4 ?
 
Код
Sub xyz()
    Randomize
    Range("B4") = Application.WorksheetFunction.MRound(Range("Y8") * Rnd, 100)
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, а как эту команду - заставить в таблице работать ?
Пытался применить ваш код вот в этом скрипте:
Код
Sub Макрос1()
    Dim r As Range, i&, j&
    On Error Resume Next
    
    [E5:I10] = ""
    
    Randomize
    Set r = [E5]
    Set r = r.Resize([RANDBETWEEN(3, 5)])
    
    If Not r Is Nothing Then
                
        With r
For i = 1 To .Rows.Count
      .Cells(i, 1) = Choose(Fix(Rnd * 3) + 1, "Текст1", "Текст2", "Текст3")
      .Cells(i, 2) = Choose(Fix(Rnd * 6) + 1, 500, 3000, 1500, 200, 1000, 2000)
      .Cells(i, 3) = Choose(Fix(Rnd * 6) + 1, 1, 0.65, 0, 0.25, 0.8, 0.9)
      .Cells(i, 4) = Choose(Fix(Rnd * 6) + 1, 4, 8, 1, 2, 3, 5)
      .Cells(i, 5) = Application.WorksheetFunction.MRound(Cells(i, 1) * Rnd, 100)
Next

        End With
    End If
End Sub
Вот эта строчка  
Код
 .Cells(i, 5) = Application.WorksheetFunction.MRound(Cells(i, 1) * Rnd, 100)
Не исполняет команду для соответствующей строки.
 
Навскидку: а так?
Код
.Cells(i, 5) = Application.WorksheetFunction.MRound(.Cells(i, 1) * Rnd, 100)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
OlegSmirnov написал: Не исполняет команду для соответствующей строки
Уберите 'On Error Resume Next' и узнаете почему
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
и узнаете почему
а чего тут знать нужно на Cells(i, 1)  смотреть, только  (.Cells(i, 1) еще хуже так как там после
.Cells(i, 1) = Choose(Fix(Rnd * 3) + 1, "Текст1", "Текст2", "Текст3") текст. А что в А1 на этом шаге - ну кто ж знает.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: а чего тут знать
Михаил, было бы полезнее, что бы OlegSmirnov, это САМ узнал. В дальнейшем подобные вопросы отпали бы
Изменено: Sanja - 15.02.2019 07:53:13
Согласие есть продукт при полном непротивлении сторон
 
Sanja, но ведь имитирует же работу :-)
По вопросам из тем форума, личку не читаю.
 
Михаил Лебедев,спасибо.
Все заработало.
надо было действительно точку поставить.
Страницы: 1
Наверх