Здравствуйте, напишите кто-нибудь функцию RANDFROM(arg1;arg2;...;argN) которая возвращает случайный аргумент из списка или подскажите вариант с встроенными функциями Пример: =RANDFROM(2,4,5,12) возвращает 5 [moder]А с какого перепугу тема в разделе "Готовые решения"? Давайте так - я тему перенесу, а Вы прочитайте Правила форума и выполните п.3 в части приложения примера. Нужно видеть, откуда берутся аргументы
Здравствуйте, напишите кто-нибудь функцию RANDFROM(arg1;arg2;...;argN) которая возвращает случайный аргумент из списка или подскажите вариант с встроенными функциями Пример: =RANDFROM(2,4,5,12) возвращает 5 [moder]А с какого перепугу тема в разделе "Готовые решения"? Давайте так - я тему перенесу, а Вы прочитайте Правила форума и выполните п.3 в части приложения примера. Нужно видеть, откуда берутся аргументыJunk
Сообщение отредактировал Junk - Воскресенье, 10.01.2016, 14:50
У меня нет примера, это просьба написать функцию на языке которым я не владею. В EXCEL есть встроенная функция RANDBETWEEN(start,finish) она подходит для частного случая, например RANDFROM(4,5,6,7,8,9) == RANDBETWEEN(4,9)
ПРИМЕР РЕШЕНИЯ НА JavaScript:
function randfrom() { return arguments[Math.floor(Math.random()*arguments.length)] } randfrom(1,4,5,8) // возвратит, например, 4 [moder]Тема, кстати, тоже не по правилам названа. Переименуйте во что-то более конкретное.[/moder]
У меня нет примера, это просьба написать функцию на языке которым я не владею. В EXCEL есть встроенная функция RANDBETWEEN(start,finish) она подходит для частного случая, например RANDFROM(4,5,6,7,8,9) == RANDBETWEEN(4,9)
ПРИМЕР РЕШЕНИЯ НА JavaScript:
function randfrom() { return arguments[Math.floor(Math.random()*arguments.length)] } randfrom(1,4,5,8) // возвратит, например, 4 [moder]Тема, кстати, тоже не по правилам названа. Переименуйте во что-то более конкретное.[/moder]Junk
Сообщение отредактировал Manyasha - Воскресенье, 10.01.2016, 13:59
Function randfrom(args) Dim ind As Integer Randomize ind = Int((UBound(args) + 1) * Rnd) randfrom = args(ind) End Function Sub primer() Debug.Print randfrom(Array(1, 9, 5, 4, 2)) End Sub
[/vba] можно формулой, как-то так
Код
=ИНДЕКС(A1:A6;СЛУЧМЕЖДУ(1;6))
Junk, udf: [vba]
Код
Function randfrom(args) Dim ind As Integer Randomize ind = Int((UBound(args) + 1) * Rnd) randfrom = args(ind) End Function Sub primer() Debug.Print randfrom(Array(1, 9, 5, 4, 2)) End Sub
Manyasha, спасибо, но когда я пишу в excel =randfrom(1;2;3) или =randfrom(array(1,2,3)) выскакивает ошибка, простите, за глупые на ваш взгляд, вопросы, но что мне вписать в ячейку чтобы пользоваться вашей функцией
P.S. Вариант с индексом вполне меня устраивает, но данная функция была бы пределом совершенства )
Manyasha, спасибо, но когда я пишу в excel =randfrom(1;2;3) или =randfrom(array(1,2,3)) выскакивает ошибка, простите, за глупые на ваш взгляд, вопросы, но что мне вписать в ячейку чтобы пользоваться вашей функцией
P.S. Вариант с индексом вполне меня устраивает, но данная функция была бы пределом совершенства )Junk
Function randfrom(args) Dim ind As Integer Randomize ind = Int((UBound(args) - LBound(args) + 1) * Rnd + LBound(args)) randfrom = args(ind) End Function
Function randfrom(args) Dim ind As Integer Randomize ind = Int((UBound(args) - LBound(args) + 1) * Rnd + LBound(args)) randfrom = args(ind) End Function
Мне кажется, удобнее диапазоном передавать UPD вариант для одно- и двумерных диапазонов [vba]
Код
Function tt(Rng As Range) As Double Dim arr: arr = Rng.Value Dim i As Long, j As Long i = Application.WorksheetFunction.RandBetween(1, UBound(arr)) j = Application.WorksheetFunction.RandBetween(1, UBound(arr, 2)) tt = arr(i, j) End Function
[/vba]
Мне кажется, удобнее диапазоном передавать UPD вариант для одно- и двумерных диапазонов [vba]
Код
Function tt(Rng As Range) As Double Dim arr: arr = Rng.Value Dim i As Long, j As Long i = Application.WorksheetFunction.RandBetween(1, UBound(arr)) j = Application.WorksheetFunction.RandBetween(1, UBound(arr, 2)) tt = arr(i, j) End Function