Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Генерация числа в диапазоне за исключением некоторого значения / 5 сообщений из 5, страница 1 из 1
18.12.2015, 15:09
    #39131931
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация числа в диапазоне за исключением некоторого значения
Доброго времени суток.

MS Excel 2013 Rus.

Нужна формула для генерации числа из заданного диапазона за исключением некоторого числа из этого диапазона ( в идеале - чтобы можно было бы указывать вообще произвольный набор таких исключений).

Например, задача такая: получить произвольное число из диапазона [2:12] за исключением числа 10. В качестве заготовки написал такую формулу:
Код: sql
1.
=ЕСЛИ(10 = СЛУЧМЕЖДУ($B$2;$E$2);СЛУЧМЕЖДУ($B$2;9);СЛУЧМЕЖДУ($B$2;$E$2))


Ячейки B2 и E2 содержат граничные значения диапазона произвольных чисел. Например: B2 = 2 и E2 = 12.

Если условие не выполняется, то нужно в качестве значения оставить исходное (т.е. проверяемое) число. Проблема в обозначенной формуле в том, что при выполнении условия происходит повторная генерация и вполне возможно снова получить 10. Как правильно указать в последнем параметре условия ЕСЛИ , что если условие не выполняется, то следует применять проверяемое значение?

Спасибо.
...
Рейтинг: 0 / 0
18.12.2015, 15:29
    #39131959
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация числа в диапазоне за исключением некоторого значения
Одной формулой, без промежуточных ячеек, не обойтись.
Но самое разумное в данном случае (особенно если необходимо исключать произвольный набор значений) делать это пользовательской функцией.
...
Рейтинг: 0 / 0
19.12.2015, 19:15
    #39132384
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация числа в диапазоне за исключением некоторого значения
Конкретно для данной задачи:
Код: plaintext
=НАИМЕНЬШИЙ({2:3:4:5:6:7:8:9:11:12};СЛУЧМЕЖДУ(1;10))

массив констант {2:3:4:5:6:7:8:9:11:12} можно получать автоматически используя функцию СТРОКА().

Формула массива (вводится нажатием Ctrl+Shift+Enter):
Код: plaintext
=НАИМЕНЬШИЙ(ЕСЛИ(ЕНД(ПОИСКПОЗ(СТРОКА($A$2:$A$12);{6;8;10};0));СТРОКА($A$2:$A$12));СЛУЧМЕЖДУ(1;8))
Данный вариант позволяет генерировать случайные числа от 2 до 12 за исключением 6, 8, 10
...
Рейтинг: 0 / 0
19.12.2015, 21:30
    #39132412
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация числа в диапазоне за исключением некоторого значения
можно делать случайное между 2 и 11, если число >=10, прибавлять 1
...
Рейтинг: 0 / 0
20.12.2015, 14:54
    #39132544
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация числа в диапазоне за исключением некоторого значения
для одного значения можно вообще воспользоваться формулой без всяких "если"
Код: vbnet
1.
2.
3.
4.
=округл( ( СЛУЧМЕЖДУ(Мин;Макс-1) + Дельта ) * коэффициент)
где
коэффициент = 1 + 1 / (Макс - Мин))
Дельта = (ПропускаемоеЗначение+0.5)/коэффициент - ПропускаемоеЗначение
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Генерация числа в диапазоне за исключением некоторого значения / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]