Как сделать чтобы случайные числа не менялись в excel

Обновлено: 04.07.2024

Нечастая, но интересная задача: выбрать из массива данных (списка) случайным образом N элементов. Причин для ее возникновения может быть несколько, например:

  • Объем данных слишком велик, поэтому мы удовлетворяемся анализом случайной выборки из полного набора данных.
  • Выбор победителей из числа участников какого-либо конкурса или лотереи.

В любом случае перед нами стоит задача отобрать случайным образом заданное количество элементов из какого-либо набора (например, вот такого):

Способ 1. Случайная сортировка

Добавить к нашему списку еще один столбец и вставить в него функцию генерации случайных чисел СЛЧИС (RAND) . Затем отсортировать наш список по добавленному столбцу (Данные - Сортировка) и взять N первых элементов из получившейся таблицы:

Минусы такого способа очевидны - придется вручную каждый раз пересортировывать список, если нам необходимо будет сделать другую случайную выборку. В плюсах - простота и доступность.

Способ 2. Функция НАИМЕНЬШИЙ

Этот способ заключается в использовании функции НАИМЕНЬШИЙ (SMALL) для выбора из списка N позиций с наименьшим случайным числом в столбце А:

После выбора пяти (в нашем примере) наименьших случайных чисел из столбца А, мы вытаскиваем имена, которые соответствуют этим числам с помощью функции ВПР (VLOOKUP).

Способ 3. Случайная выборка без повторов - функция Lotto на VBA

Можно создать простую функцию на VBA, которая будет выдавать заданное количество случайных чисел из нужного интервала. Откроем редактор Visual Basic (ALT+F11 или в старых версиях Excel через меню Сервис - Макрос - Редактор Visual Basic), вставим новый модуль через меню Insert - Module и скопируем туда текст вот такой функции:

У этой функции будет три аргумента:

  • Bottom - нижняя граница интервала случайных чисел
  • Top - верхняя граница интервала случайных чисел
  • Amount - количество случайных чисел, которое мы хотим отобрать из интервала

Т.е., например, чтобы отобрать 5 случайных чисел от 10 до 100, нужно будет ввести =Lotto(10;100;5)

Теперь эту функцию легко использовать для отбора случайных значений. Добавим к нашему списку столбец с нумерацией и будем отбирать людей по случайным номерам, которые генерирует функция Lotto:

Обратите внимание, что наша функция Lotto должна быть введена как формула массива, т.е. сначала необходимо выделить диапазон ячеек результатов (D2:D6) затем ввести нашу функцио Lotto и, после ввода аргументов функции, нажать Ctrl+Shift+Enter, чтобы ввести эту функцию именно как функцию массива во все выделенные ячейки.

Ну, а дальше останется при помощи уже знакомой функции ВПР (VLOOKUP) вытащить имена из списка, соответствующие случайным номерам.

Как мы знаем, когда мы используем формулы для генерации случайных чисел в Excel, случайные числа всегда меняются, пока мы дважды щелкаем по ячейке или выполняем некоторые вычисления этих случайных чисел, что иногда может раздражать. Теперь я расскажу вам несколько простых способов предотвратить изменение случайных чисел в Excel.

Остановить изменение случайных чисел с помощью Вставить случайные данные из Kutools for Excel

Остановить изменение случайных чисел с помощью копирования и вставки

Копирование и вставка случайных чисел в качестве значений будет хорошим способом остановить их изменение.

Выберите нужные случайные числа и нажмите Ctrl + C чтобы скопировать их, затем выберите ячейку, в которую вы хотите вставить случайные числа, затем щелкните правой кнопкой мыши, чтобы щелкнуть Специальная вставка > Ценности (V). Смотрите скриншот:

док-держать-случайное-число-1

Теперь случайные числа вставлены и больше не изменятся.

Остановите изменение случайных чисел, установив параметры расчета

Кроме того, в Excel вы можете остановить автоматический расчет, чтобы случайные числа не изменились.

док-держать-случайное-число-2

Откройте книгу Excel, в которой не должны изменяться случайные числа, и нажмите Формула Вкладка, а затем нажмите кнопку Варианты расчета, затем проверьте механический в раскрывающемся списке. Смотрите скриншот:

Примечание:

При использовании этого метода все формулы в этой книге больше не будут вычисляться автоматически.

Остановить изменение случайных чисел с помощью Вставить случайные данные из Kutools for Excel

Для более удобного и эффективного использования Вставить случайные данные особенность Kutools for Excel должен быть лучший выбор. Вам просто нужно использовать Вставить случайные данные функция рандомизации серий, серия будет зафиксирована раз и навсегда.

doc radomize десятичное целое число 13

1. Выберите диапазон, в котором вы хотите генерировать случайные числа, и нажмите Kutools > Вставить > Яnsert Случайные данные.

2. в Вставить случайные данные диалоговое окно, выберите нужный тип вкладки, здесь я хочу вставить случайное целое число, нажимаю Целое вкладка или если вы хотите вставить случайное десятичное число, щелкните Десятичная дробь вкладка, затем введите случайный диапазон, который мне нужен, в от и к текстовые поля, вы можете указать как вам нужно, если вы хотите вставить номер без дубликатов, отметьте Уникальные ценности.

doc kutools вставить случайные данные 2

doc kutools вставить случайные данные 3

3. Нажмите Ok чтобы применить функцию и выйти из диалогового окна, теперь случайные числа генерируются в выбранном диапазоне и не меняются.

С помощью функции «Вставить случайные данные» Kutools for Excel вы можете вставить случайную дату, случайную строку и произвольный настраиваемый список. Щелкните здесь, чтобы узнать об этом подробнее.

Как заставить excel выдавать случайные числа, при этом постоянно не изменяя значения?

Нужно чтобы эксель выдавал числа от -0,03 до 0,03 в случайном порядке и, желательно, используя только экселевские формулы (с ВБА я не знаком). Я реализовал это след. образом (получилось, к сожалению, только 2 варианта 0,01 и - 0,01 - основной недостаток, желательно вариантов побольше):

в А1 ячейке: =СЛЧИС()
в А2 =ЕСЛИ(А1<0.5;-0.01;0.01)

Ещё 1 недостаток - эксель постоянно обновляет значение в А1, а мне это мешает - как заставить эксель не изменять результат?

Заранее извиняюсь, что спрашиваю в форуме посвященном программированию, но я больше не знаю сайтов где смог бы получить нужный совет.

Спасибо. А как сделать так чтобы значение случайного числа не обновлялись постоянно? Или это на данный момент не возможно? А как? Чтобы один раз сгенерировалось и всё? Тогда вбей туда вручную -0.01. Или объясни поподробней. Просто человек хочет запомнить случайно сгинериное число..
1) Правой кнопкой на ячейке(ах) с обновляющимся значением -> Копировать
2) Правой кнопкой -> Специальная вставка -> Значения Нет уж, пусть объяснит. А то он сейчас пожалуется, что после твоего совета у него формула "пропала". Нет уж, пусть объяснит. А то он сейчас пожалуется, что после твоего совета у него формула "пропала".

Когда использую формулу =СЛЧИС() - excel постоянно обновляет число в ячейке (например изначально сгенерированное число 0.53456, после того как я 2 раза щёлкну в любой свободной ячейке, измениться на 0.9678 , например, и т.д.). Как от этого избавиться? Желательно автоматом - без копирования и т.п.
Использую связь (ole вроде - бы называется) с текстовым документом в word'e - там эти числа встречаются 2 раза в двух разных таблицах, но числа должны быть одинаковыми, а так как =СЛЧИС() постоянно обновляет значения, то одинаковыми они не получаются :(

Давай мы тебе объясним, как макросом это сделать. У тебя на листе будет кнопочка нарисована, когда ты будешь на неё нажимать, будет появляться новое случайное число. А когда не будешь нажимать - ничего меняться не будет. Пойдёт? Давай мы тебе объясним, как макросом это сделать. У тебя на листе будет кнопочка нарисована, когда ты будешь на неё нажимать, будет появляться новое случайное число. А когда не будешь нажимать - ничего меняться не будет. Пойдёт?

Конечно! Только подробно плз - я в программировании понимаю оч. плохо.

Давай мы тебе объясним, как макросом это сделать. У тебя на листе будет кнопочка нарисована, когда ты будешь на неё нажимать, будет появляться новое случайное число. А когда не будешь нажимать - ничего меняться не будет. Пойдёт?


А кроме шуток, возможно ли заставить Excel не обновлять данные. т.е., чтобы значения не пересчитывались.. и какие у этого последствия??
З.Ы.: Насчет кнопки - ждем ответа ТопикСтартера:)

А кроме шуток, возможно ли заставить Excel не обновлять данные. т.е., чтобы значения не пересчитывались..

Конечно. Отменить автоматический пересчёт.

А теперь ответ "топикстартеру".

1. Открываешь свой Экселевский файл. Нажимаешь Alt+F11. Попадаешь в редактор Visual Basic for Applications (далее сокращённо ВБА).

2. В меню ВБА выбираешь команду Вставка / Модуль. У тебя откроется окно с чистым модулем.

3. Копируешь туда вот такой код:

Sub GetRandom()
Randomize
ThisWorkbook.Worksheets("Лист1").Range("A1").Value = Rnd * 0.06 - 0.03
End Sub

4. Изменяешь в коде названия листа и адрес ячейки на те, что тебе нужны.

5. Закрываешь редактор ВБА и возвращаешься в Эксель.

6. Рисуешь в удобном тебе месте листа любой объект из доступных на панели инструментов "Рисование" - кружок, рожицу, стрелочку, что угодно. Раскрашиваешь его как угодно, добавляешь текст и т.п.

7. Нажимаешь на этом объекте правой кнопкой мыши, в появившемся меню выбираешь "Назначить макрос. " Перед тобой откроется окно, где будет список имеющихся макросов из одного пункта GetRandom. Выбираешь его и жмёшь Ок. Всё.

Спасибо огромное - всё работает как надо.

Правда появилось пара ламерских вопросов:
1. как сделать так чтобы этот макрос автоматом запускался 1 раз при открытии книги?
2. Все значения в нескольких ячейках получаются одинаковыми :( мне это не подходит - надо чтобы были разные.

Затем ссылаюсь в расчетах на этот диапазон.
При каждом обновлении случайный диапазон чсиел меняется.

Можно ли как-то сделать так, чтобы этот случайный диапазон оставался статическим, но при этом формула в ячейке оставалась такой же

Добрый день.
Помогите решить такой вопрос.
Я задаю диапазон случайных чисел формулой

Затем ссылаюсь в расчетах на этот диапазон.
При каждом обновлении случайный диапазон чсиел меняется.

Можно ли как-то сделать так, чтобы этот случайный диапазон оставался статическим, но при этом формула в ячейке оставалась такой же

Затем ссылаюсь в расчетах на этот диапазон.
При каждом обновлении случайный диапазон чсиел меняется.

Можно ли как-то сделать так, чтобы этот случайный диапазон оставался статическим, но при этом формула в ячейке оставалась такой же

? Автор - VadimVV
Дата добавления - 07.08.2015 в 14:53 так не подойдет, т.к. нужны пояснения, каким образом получились цифры.
Т.е. я знаю, что диапазон должен быть от 55 до 70, я задаю его формулой один раз, и когда кто-то смотрит на формулу, понимает, откуда взялась цифра, но сама цифра при обновлении уже не меняется. так не подойдет, т.к. нужны пояснения, каким образом получились цифры.
Т.е. я знаю, что диапазон должен быть от 55 до 70, я задаю его формулой один раз, и когда кто-то смотрит на формулу, понимает, откуда взялась цифра, но сама цифра при обновлении уже не меняется. VadimVV Ну, допустим, файл - параметры - формулы - вычисления в книге = вручную. Ну, допустим, файл - параметры - формулы - вычисления в книге = вручную. ArkaIIIa

Можно ли как-то сделать так, чтобы этот случайный диапазон оставался статическим, но при этом формула в ячейке оставалась такой же

Нет, так сделать не получится: функционал Excel задуман именно таким образом, что RANDBETWEEN пересчитывается при каждом обновлении любой ячейки.

Ну, допустим, файл - параметры - формулы - вычисления в книге = вручную При любом пересчете формул в книге RANDBETWEEN все равно будет менять сгенерированные числа.

Можно ли как-то сделать так, чтобы этот случайный диапазон оставался статическим, но при этом формула в ячейке оставалась такой же

Нет, так сделать не получится: функционал Excel задуман именно таким образом, что RANDBETWEEN пересчитывается при каждом обновлении любой ячейки.

Ну, допустим, файл - параметры - формулы - вычисления в книге = вручную При любом пересчете формул в книге RANDBETWEEN все равно будет менять сгенерированные числа. Samaretz

Можно ли как-то сделать так, чтобы этот случайный диапазон оставался статическим, но при этом формула в ячейке оставалась такой же

Нет, так сделать не получится: функционал Excel задуман именно таким образом, что RANDBETWEEN пересчитывается при каждом обновлении любой ячейки.

Ну, допустим, файл - параметры - формулы - вычисления в книге = вручную При любом пересчете формул в книге RANDBETWEEN все равно будет менять сгенерированные числа. Автор - Samaretz
Дата добавления - 07.08.2015 в 15:42 При любом пересчете формул в книге RANDBETWEEN все равно будет менять сгенерированные числа. и когда кто-то смотрит на формулу, понимает, откуда взялась цифра
мне подумалось, что для того "кого-то" файл - просто показушный, как лист бумаги. Посмотреть цифру и принять к сведению. Без перерасчетов. При любом пересчете формул в книге RANDBETWEEN все равно будет менять сгенерированные числа. и когда кто-то смотрит на формулу, понимает, откуда взялась цифра
мне подумалось, что для того "кого-то" файл - просто показушный, как лист бумаги. Посмотреть цифру и принять к сведению. Без перерасчетов. ArkaIIIa При любом пересчете формул в книге RANDBETWEEN все равно будет менять сгенерированные числа. и когда кто-то смотрит на формулу, понимает, откуда взялась цифра
мне подумалось, что для того "кого-то" файл - просто показушный, как лист бумаги. Посмотреть цифру и принять к сведению. Без перерасчетов. Автор - ArkaIIIa
Дата добавления - 07.08.2015 в 15:48 диапазон оставался статическим, но при этом формула в ячейке оставалась такой же
Можно только получать случайные числа другим способом, либо макросом, либо из пакета Анализ данных - генератор случайных чисел. диапазон оставался статическим, но при этом формула в ячейке оставалась такой же
Можно только получать случайные числа другим способом, либо макросом, либо из пакета Анализ данных - генератор случайных чисел. Udik диапазон оставался статическим, но при этом формула в ячейке оставалась такой же
Можно только получать случайные числа другим способом, либо макросом, либо из пакета Анализ данных - генератор случайных чисел. Автор - Udik
Дата добавления - 07.08.2015 в 16:05 мне подумалось, что для того "кого-то" файл - просто показушный, как лист бумаги. Посмотреть цифру и принять к сведению. Без перерасчетов.

Да, в случае, если никакие другие вводные не будут меняться. Но они, скорее всего, будут.

Ок, понял, что нельзя так сделать. Спасибо.
[moder]Для цитирования есть специально обученная кнопка - "Цитата"

мне подумалось, что для того "кого-то" файл - просто показушный, как лист бумаги. Посмотреть цифру и принять к сведению. Без перерасчетов.

Да, в случае, если никакие другие вводные не будут меняться. Но они, скорее всего, будут.

Ок, понял, что нельзя так сделать. Спасибо.
[moder]Для цитирования есть специально обученная кнопка - "Цитата" VadimVV

мне подумалось, что для того "кого-то" файл - просто показушный, как лист бумаги. Посмотреть цифру и принять к сведению. Без перерасчетов.

Да, в случае, если никакие другие вводные не будут меняться. Но они, скорее всего, будут.

Ок, понял, что нельзя так сделать. Спасибо.
[moder]Для цитирования есть специально обученная кнопка - "Цитата" Автор - VadimVV
Дата добавления - 07.08.2015 в 16:21

Читайте также: