Как составить формулу, случайно выбирающую ячейку из диапазона и возвращающую ее значение, но при условии, что это значение больше 0?
Составил я формулу. =INDEX(F:J;ROW(F13);RANDBETWEEN(1;5)) По-русски: =ИНДЕКС(F:J;СТРОКА(F13);СЛУЧМЕЖДУ(1;5)
Суть формулы в следующем. В нужной мне строке эта формула выбирает случайную ячейку в диапазоне (в данном случае это будет строка 13 и диапазон F13:J13) и возвращает мне ее значение. Проблема в том, что эта ячейка может быть пустой и он вернет 0. Как можно модернизировать эту формулу, чтобы она в этом диапазоне выбрала ячейку, в которой обязательно стоит число, а пустые ячейки в выборе не фигурировали?
Дополнительно:
Так?
=ArrayFormula(INDEX(FILTER(F13:J13; F13:J13<>""); RANDBETWEEN(1;COUNTA(F13:J13)))) |
=ArrayFormula(INDEX(FILTER(F13:J13; F13:J13<>""); RANDBETWEEN(1;COUNTA(F13:J13))))
- О, да, спасибо огромное!
Ответы:
Добрый день.
Вариант UDF вместо формулы.
Public Function ExtractRandom(ByRef TargetRange As Excel.Range)
Dim rCell As Range
Randomize
ExtractRandom = TargetRange.Cells(Int(Rnd * TargetRange.Count) + 1)
If ExtractRandom = 0 Then
For Each rCell In TargetRange.Cells
If rCell.Value <> 0 Then
ExtractRandom = rCell.Value
Exit Function
Else
End If
Next rCell
Else
End If
End Function
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы составить формулу, которая случайно выбирает ячейку из диапазона и возвращает ее значение, при условии, что это значение больше 0, можно воспользоваться функцией INDEX и RANDARRAY в программе Excel.
Сначала определим диапазон ячеек, из которого мы будем выбирать случайную ячейку. Для примера, диапазон можно задать от A1 до A10.
Далее создадим формулу, которая будет выбирать случайную ячейку из этого диапазона. Для этого воспользуемся функцией INDEX. Формула будет выглядеть примерно так:
=INDEX(A1:A10, RANDARRAY(1,1,1,10))
Эта формула выберет случайную ячейку из диапазона A1:A10.
Теперь добавим условие, что выбранное значение должно быть больше 0. Для этого воспользуемся функцией IF. Итоговая формула будет выглядеть так:
=IF(INDEX(A1:A10, RANDARRAY(1,1,1,10))>0, INDEX(A1:A10, RANDARRAY(1,1,1,10)), "")
Эта формула сначала выберет случайную ячейку из диапазона A1:A10, а затем проверит, больше ли выбранное значение 0. Если да, то вернет это значение, если нет - пустую строку.
Таким образом, с помощью функций INDEX, RANDARRAY и IF можно создать формулу, которая будет случайно выбирать ячейку из диапазона и возвращать ее значение, при условии, что это значение больше 0.