Функция СЛЧИС
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще. Меньше
В этой статье описаны синтаксис формулы и использование функции СЛЧИС в Microsoft Excel.
Описание
Функция СЛЧИС возвращает равномерно распределенное случайное вещественное число, большее или равное 0, но меньшее 1. При каждом пересчете листа возвращается новое случайное вещественное число.
Примечание: начиная с версии Excel 2010, в Excel для генерации случайных чисел используется алгоритм «вихрь Мерсенна» (MT19937).
Синтаксис
У функции СЛЧИС нет аргументов.
Замечания
- Чтобы получить случайное вещественное число в диапазоне между a и b, можно использовать следующую формулу:
- Если требуется применить функцию СЛЧИС для генерации случайного числа, но изменение этого числа при каждом вычислении значения ячейки нежелательно, вы можете ввести в строке формулы =СЛЧИС(), а затем нажать клавишу F9, чтобы заменить формулу случайным числом. Формула вычисляется и оставляет только значение.
Пример
Скопируйте образец данных из приведенной ниже таблицы и вставьте их в ячейку A1 на новом листе Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — ВВОД. При необходимости вы можете настроить ширину столбцов, чтобы увидеть все данные.
Случайное число, большее или равное 0, но меньшее 1
Случайное число, большее или равное 0 и меньшее 100
Случайное целое число, большее или равное 0 и меньшее 100
Примечание. При пересчете листа после ввода формулы или данных в другую ячейку или при выполнении пересчета вручную (по нажатию клавиши F9) каждая формула, в которой используется функция СЛЧИС, создает новое случайное число.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
Генератор случайных чисел Excel в функциях и анализе данных
У нас есть последовательность чисел, состоящая из практически независимых элементов, которые подчиняются заданному распределению. Как правило, равномерному распределению.
Сгенерировать случайные числа в Excel можно разными путями и способами. Рассмотрим только лучше из них.
Функция случайного числа в Excel
- Функция СЛЧИС возвращает случайное равномерно распределенное вещественное число. Оно будет меньше 1, больше или равно 0.
- Функция СЛУЧМЕЖДУ возвращает случайное целое число.
Рассмотрим их использование на примерах.
Выборка случайных чисел с помощью СЛЧИС
Данная функция аргументов не требует (СЛЧИС()).
Чтобы сгенерировать случайное вещественное число в диапазоне от 1 до 5, например, применяем следующую формулу: =СЛЧИС()*(5-1)+1.

Возвращаемое случайное число распределено равномерно на интервале [1,10].
При каждом вычислении листа или при изменении значения в любой ячейке листа возвращается новое случайное число. Если нужно сохранить сгенерированную совокупность, можно заменить формулу на ее значение.
- Щелкаем по ячейке со случайным числом.
- В строке формул выделяем формулу.
- Нажимаем F9. И ВВОД.
Проверим равномерность распределения случайных чисел из первой выборки с помощью гистограммы распределения.
- Сформируем «карманы». Диапазоны, в пределах которых будут находиться значения. Первый такой диапазон – 0-0,1. Для следующих – формула =C2+$C$2.

- Определим частоту для случайных чисел в каждом диапазоне. Используем формулу массива .

- Сформируем диапазоны с помощью знака «сцепления» (=»[0,0-«&C2&»]»).

- Строим гистограмму распределения 200 значений, полученных с помощью функции СЛЧИС ().

Диапазон вертикальных значений – частота. Горизонтальных – «карманы».
Функция СЛУЧМЕЖДУ
Синтаксис функции СЛУЧМЕЖДУ – (нижняя граница; верхняя граница). Первый аргумент должен быть меньше второго. В противном случае функция выдаст ошибку. Предполагается, что границы – целые числа. Дробную часть формула отбрасывает.
Пример использования функции:

Случайные числа с точностью 0,1 и 0,01:

Как сделать генератор случайных чисел в Excel
Сделаем генератор случайных чисел с генерацией значения из определенного диапазона. Используем формулу вида: =ИНДЕКС(A1:A10;ЦЕЛОЕ(СЛЧИС()*10)+1).

Сделаем генератор случайных чисел в диапазоне от 0 до 100 с шагом 10.

Из списка текстовых значений нужно выбрать 2 случайных. С помощью функции СЛЧИС сопоставим текстовые значения в диапазоне А1:А7 со случайными числами.

Воспользуемся функцией ИНДЕКС для выбора двух случайных текстовых значений из исходного списка.

Чтобы выбрать одно случайное значение из списка, применим такую формулу: =ИНДЕКС(A1:A7;СЛУЧМЕЖДУ(1;СЧЁТЗ(A1:A7))).

Генератор случайных чисел нормального распределения
Функции СЛЧИС и СЛУЧМЕЖДУ выдают случайные числа с единым распределением. Любое значение с одинаковой долей вероятности может попасть в нижнюю границу запрашиваемого диапазона и в верхнюю. Получается огромный разброс от целевого значения.
Нормальное распределение подразумевает близкое положение большей части сгенерированных чисел к целевому. Подкорректируем формулу СЛУЧМЕЖДУ и создадим массив данных с нормальным распределением.
Себестоимость товара Х – 100 рублей. Вся произведенная партия подчиняется нормальному распределению. Случайная переменная тоже подчиняется нормальному распределению вероятностей.
При таких условиях среднее значение диапазона – 100 рублей. Сгенерируем массив и построим график с нормальным распределением при стандартном отклонении 1,5 рубля.
Используем функцию: =НОРМОБР(СЛЧИС();100;1,5).

Программа Excel посчитала, какие значения находятся в диапазоне вероятностей. Так как вероятность производства товара с себестоимостью 100 рублей максимальная, формула показывает значения близкие к 100 чаще, чем остальные.
Перейдем к построению графика. Сначала нужно составить таблицу с категориями. Для этого разобьем массив на периоды:
- Определим минимальное и максимальное значение в диапазоне с помощью функций МИН и МАКС.
- Укажем величину каждого периода либо шаг. В нашем примере – 1.
- Количество категорий – 10.

- Нижняя граница таблицы с категориями – округленное вниз ближайшее кратное число. В ячейку Н1 вводим формулу =ОКРВНИЗ(E1;E5).
- В ячейке Н2 и последующих формула будет выглядеть следующим образом: =ЕСЛИ(G2;H1+$E$5;»»). То есть каждое последующее значение будет увеличено на величину шага.

- Посчитаем количество переменных в заданном промежутке. Используем функцию ЧАСТОТА. Формула будет выглядеть так:

На основе полученных данных сможем сформировать диаграмму с нормальным распределением. Ось значений – число переменных в промежутке, ось категорий – периоды.

График с нормальным распределением готов. Как и должно быть, по форме он напоминает колокол.
Сделать то же самое можно гораздо проще. С помощью пакета «Анализ данных». Выбираем «Генерацию случайных чисел».

О том как подключить стандартную настройку «Анализ данных» читайте здесь.
Заполняем параметры для генерации. Распределение – «нормальное».

Жмем ОК. Получаем набор случайных чисел. Снова вызываем инструмент «Анализ данных». Выбираем «Гистограмма». Настраиваем параметры. Обязательно ставим галочку «Вывод графика».


График с нормальным распределением в Excel построен.
Функция СЛУЧМЕЖДУ() — Случайное число из заданного интервала в EXCEL
Нижн_граница — наименьшее целое число, которое возвращает функция.
Верхн_граница — наибольшее целое число, которое возвращает функция.
Если значение нижняя_граница больше значения верхняя_граница , функция вернет ошибку #ЧИСЛО! Предполагается, что границы диапазона – целые числа. Если введено число с дробной частью, то дробная часть будет отброшена.
Если необходимо получить случайное число, например, в интервале от 0 до 0,1, то нужно написать следующую формулу: =СЛУЧМЕЖДУ(0;10)/100 (с точностью 0,01, т.е. случайные значения будут 0,02; 0,05 и т.д.) =СЛУЧМЕЖДУ(0;1000)/10000 (с точностью 0,0001, т.е. случайные значения будут 0,0689; 0,0254 и т.д.)
Если необходимо получить не целое, а вещественное число, например, в интервале от 3 до 10, то нужно использовать функцию СЛЧИС() : =СЛЧИС()*(10-3)+3 (точностью 15 знаков, т.е. случайные значения будут 7,68866700270417; 8,68428856478223 и т.д.)
Если требуется сгенерировать случайное число от -2,699 до 30,02, причем оно должно быть округлено до тысячных (количество знаков после запятой случайного числа = максимальному количеству знаков после запятой границ интервала), то сначала нужно определить количество знаков после запятой у обоих границ (см. файл примера ). Это можно сделать с помощью формулы = ДЛСТР(A15)-1-ДЛСТР(ЦЕЛОЕ(A15))

Затем воспользоваться функцией СЛЧИС() , округлив значение.
Примечание . Границы интервала должны быть заданы константой. В случае расчетных значений интервалов результат непредсказуем (см. Проблемы округления в MS EXCEL ). Совет: Если границы интервала рассчитываются формулами, что в них можно задать необходимую точность.
Функция пересчитывает свое значение после каждого ввода нового значения в любую ячейку листа (или изменения значения ячейки) или нажатии клавиши F9 .
Как заставить excel выдавать случайные числа, при этом постоянно не изменяя значения?
Как заставить excel выдавать случайные числа, при этом постоянно не изменяя значения?
Нужно чтобы эксель выдавал числа от -0,03 до 0,03 в случайном порядке и, желательно, используя только экселевские формулы (с ВБА я не знаком). Я реализовал это след. образом (получилось, к сожалению, только 2 варианта 0,01 и — 0,01 — основной недостаток, желательно вариантов побольше):
в А1 ячейке: =СЛЧИС()
в А2 =ЕСЛИ(А1<0.5;-0.01;0.01)
Ещё 1 недостаток — эксель постоянно обновляет значение в А1, а мне это мешает — как заставить эксель не изменять результат?
Заранее извиняюсь, что спрашиваю в форуме посвященном программированию, но я больше не знаю сайтов где смог бы получить нужный совет.
16 ответов
04 января 2007 года
1.2K / / 17.10.2002
Напиши сразу так:
=СЛЧИС()*0.06-0.03
05 января 2007 года
11 / / 04.04.2006
Спасибо. А как сделать так чтобы значение случайного числа не обновлялись постоянно? Или это на данный момент не возможно?
05 января 2007 года
1.2K / / 17.10.2002
А как? Чтобы один раз сгенерировалось и всё? Тогда вбей туда вручную -0.01. Или объясни поподробней.
05 января 2007 года
816 / / 16.12.2004
Просто человек хочет запомнить случайно сгинериное число..
1) Правой кнопкой на ячейке(ах) с обновляющимся значением -> Копировать
2) Правой кнопкой -> Специальная вставка -> Значения
05 января 2007 года
1.2K / / 17.10.2002
Нет уж, пусть объяснит. А то он сейчас пожалуется, что после твоего совета у него формула «пропала».
05 января 2007 года
816 / / 16.12.2004
05 января 2007 года
11 / / 04.04.2006
Нет уж, пусть объяснит. А то он сейчас пожалуется, что после твоего совета у него формула «пропала».
Когда использую формулу =СЛЧИС() — excel постоянно обновляет число в ячейке (например изначально сгенерированное число 0.53456, после того как я 2 раза щёлкну в любой свободной ячейке, измениться на 0.9678 , например, и т.д.). Как от этого избавиться? Желательно автоматом — без копирования и т.п.
Использую связь (ole вроде — бы называется) с текстовым документом в word’e — там эти числа встречаются 2 раза в двух разных таблицах, но числа должны быть одинаковыми, а так как =СЛЧИС() постоянно обновляет значения, то одинаковыми они не получаются 🙁
08 января 2007 года
1.2K / / 17.10.2002
Давай мы тебе объясним, как макросом это сделать. У тебя на листе будет кнопочка нарисована, когда ты будешь на неё нажимать, будет появляться новое случайное число. А когда не будешь нажимать — ничего меняться не будет. Пойдёт?
08 января 2007 года
11 / / 04.04.2006
Давай мы тебе объясним, как макросом это сделать. У тебя на листе будет кнопочка нарисована, когда ты будешь на неё нажимать, будет появляться новое случайное число. А когда не будешь нажимать — ничего меняться не будет. Пойдёт?
Конечно! Только подробно плз — я в программировании понимаю оч. плохо.
08 января 2007 года
816 / / 16.12.2004
Давай мы тебе объясним, как макросом это сделать. У тебя на листе будет кнопочка нарисована, когда ты будешь на неё нажимать, будет появляться новое случайное число. А когда не будешь нажимать — ничего меняться не будет. Пойдёт?
А кроме шуток, возможно ли заставить Excel не обновлять данные. т.е., чтобы значения не пересчитывались.. и какие у этого последствия??
З.Ы.: Насчет кнопки — ждем ответа ТопикСтартера:)
08 января 2007 года
1.2K / / 17.10.2002
А кроме шуток, возможно ли заставить Excel не обновлять данные. т.е., чтобы значения не пересчитывались..
Конечно. Отменить автоматический пересчёт.
08 января 2007 года
1.2K / / 17.10.2002
А теперь ответ «топикстартеру».
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. Выбираешь его и жмёшь Ок. Всё.
08 января 2007 года
11 / / 04.04.2006
Спасибо огромное — всё работает как надо.
Правда появилось пара ламерских вопросов:
1. как сделать так чтобы этот макрос автоматом запускался 1 раз при открытии книги?
2. Все значения в нескольких ячейках получаются одинаковыми 🙁 мне это не подходит — надо чтобы были разные.
Ещё решил попробовать сделать значения рандомных чисел зависимым от значений чисел в других ячейках — как это сделать?
Попробовал написать так —
Sub GetRandom()
Randomize
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E19») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F19»).Value = Rnd * 0.06 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E19») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F19»).Value = Rnd * 0.04 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E20») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F20»).Value = Rnd * 0.06 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E20») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F20»).Value = Rnd * 0.04 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E21») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F21»).Value = Rnd * 0.06 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E21») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F21»).Value = Rnd * 0.04 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E22») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F22»).Value = Rnd * 0.06 — 0.03
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E22») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F22»).Value = Rnd * 0.04 — 0.03
End If
End Sub
Но ВБ при этом ругается 🙁
08 января 2007 года
11 / / 04.04.2006
2. Все значения в нескольких ячейках получаются одинаковыми 🙁 мне это не подходит — надо чтобы были разные.
С этим разобрался
09 января 2007 года
1.2K / / 17.10.2002
Правильно вот так:
Sub GetRandom()
Randomize
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E19») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F19»).Value = Rnd * 0.06 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E19») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F19»).Value = Rnd * 0.04 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E20») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F20»).Value = Rnd * 0.06 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E20») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F20»).Value = Rnd * 0.04 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E21») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F21»).Value = Rnd * 0.06 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E21») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F21»).Value = Rnd * 0.04 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E22») > 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F22»).Value = Rnd * 0.06 — 0.03
End If
If ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«E22») < 5 Then
ThisWorkbook.Worksheets(«ÅÃÐÇ»).Range(«F22»).Value = Rnd * 0.04 — 0.03
End If
End Sub
09 января 2007 года
1.2K / / 17.10.2002
Чтобы автоматом запускалось при открытии книги, добавь в тот же модуль вот такую нехитрую процедурку:
Sub Auto_Open()
Call GetRandom
End Sub
Или переименуй свою GetRandom в Auto_Open, а потом переназначь кнопку на листе на новое имя.