Функции СЛЧИС и СЛУЧМЕЖДУ Excel на примере создания имитации игральной кости

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

Начать следует с создания новой книги, на листе которой необходимо выделить диапазон ячеек “A1:C10” и объединить их нажатием кнопки «Объединить и поместить в центре»:

Получившаяся большая ячейка (её адрес – “A1”, именование в таких случаях осуществляется по ячейке в верхнем левом углу объединяемого диапазона) понадобится чуть позже, ну а пока в другой ячейке – “B12” – нужно разместить формулу, выдающую случайное целое число от 1 до 6, и здесь можно предложить два варианта.

Вариант 1-1
Формула может иметь такой вид: ”=ЦЕЛОЕ(СЛЧИС()*6)+1”

Давайте разберём, как она работает. Использованная в ней функция СЛЧИС() не имеет аргументов и генерирует случайное число, принимающее значение в интервале от 0 до 1 (если выражаться более строго – функция возвращает псевдослучайное число с равномерным распределением). При умножении его на 6 тоже получится случайное число, большее 0, но меньшее 6. Функция ЦЕЛОЕ( ) отбрасывает у такого числа дробную его часть и получается случайная величина, принимающая целые значения от 0 до 5 – именно поэтому в выражении формулы к результату необходимо дополнительно прибавлять ещё единицу.

Вариант 1-2
Для достижения цели хорошо подходит и другая формула: ”=СЛУЧМЕЖДУ(1;6)”

Использованная в ней функция СЛУЧМЕЖДУ возвращает случайное целое число, находящееся в диапазоне между двумя заданными ей в качестве аргументов числами.

Рассмотренные функции СЛЧИС() и СЛУЧМЕЖДУ() обладают интересной особенностью: при любом изменении данных в листе (даже при простом нажатии клавиши [Delete], когда выделена заведомо пустая ячейка) выдаётся новое случайное значение – это можно использовать для «бросания» кубика.

Среди символов Юникода помимо букв самых разнообразных национальных алфавитов есть довольно много специальных знаков, в том числе – изображения граней игральной кости (найти их можно, воспользовавшись ресурсом unicode-table.com): ⚀ ⚁ ⚂ ⚃ ⚄ ⚅

Excel, как и многие другие современные программы, умеет работать с Юникодом, поэтому сделаем визуализацию результата «броска» кубика в виде показа одного из таких символов в той большой «ячейке» “A1”, в которую мы ранее объединили диапазон “A1:C10”. Здесь также можно предложить два варианта.

Вариант 2-1
Заполните ячейки в диапазоне “A14:A19” числами 1 до 6, а в ячейках диапазона “B14:B19” поместите соответствующие знаки-грани:

Теперь в ячейку “C14” поместите следующую формулу: ”=ЕСЛИ(A14=B$12;B14;””)”

Использованная в ней функция ЕСЛИ ( ; ; ) проверяет, совпадает ли случайное число в “B12” с числом в “A14” и если да, то функция возвращает содержимое ячейки “B14” (то есть изображение грани кубика), а если нет – то возвращается пустая строка (обозначается сдвоенными кавычками: «»). Обратите внимание на то, что в формуле в адресе ячейки “B12” к номеру строки применена так называемая абсолютная адресация – перед числом «12» стоит символ доллара $. Это позволяет, воспользовавшись маркером заполнения (маленький чёрный квадратик в правом нижнем углу рамки выделенной ячейки), размножить формулу вниз до ячейки “С19” и получить в каждой из шести ячеек диапазона “C14:C19” нужным образом работающую команду. В итоге получается следующее. В одной из шести ячеек указанного диапазона будет отображаться символ грани кубика, соответствующий числу в ячейке “B12”, а остальные пять ячеек при этом будут пустыми:

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

Подвариант 2-1a
Можно воспользоваться символом «амперсанд» &, работа которого в составе формулы сводится к соединению (конкатенации) строк: ”=C14&C15&C16&C17&C18&C19”

Подвариант 2-1b
В Excel имеется функция СЦЕПИТЬ( ; ; …), которая тоже позволяет объединять текстовые строки. Для нашего случая формула с ней выглядит так: ”=СЦЕПИТЬ(C14;C15;C16;C17;C18;C19)”

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

Вариант 2-2
Часто формулы Excel оказываются довольно длинными, что вызывает у новичков затруднения в их восприятии. Описанный выше Вариант 2-1 лучше подходит именно для начинающих осваивать электронные таблицы, поскольку решение задачи «размазано» по разным ячейкам, благодаря чему проще пошагово отследить, как формулы работают. Ну а тем, кто уже набрался опыта и не боится сложных и длинных команд, использующих много функций сразу, можно предложить более компактную версию в виде следующего выражения для “A1”:

=ЕСЛИ(B12=1;”⚀”;ЕСЛИ(B12=2;”⚁”;ЕСЛИ(B12=3;”⚂”;ЕСЛИ(B12=4;”⚃”;ЕСЛИ(B12=5;”⚄”;”⚅”)))))

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

Чтобы сделать акцент именно на графическом отображении «выпавшей» грани кубика, следует увеличить размер шрифта в “A1”, установив для него значение 120 пт:

После этого имитацию игральной кости можно считать готовой к использованию – напоминаю, что для «броска» достаточно выделить пустую ячейку на листе и нажать клавишу [Delete].

В некоторых играх требуется два и более кубиков – в этом случае следует копированием и вставкой продублировать диапазон с формулами:

Так как в формулах используются относительные ссылки, то они при копировании сами поменяются, образовав новый «кубик», работающий независимо от первого (абсолютная адресация строковой части адреса ячейки “B12”, использованная в Варианте 2-1, ни на что не повлияет, если вставку скопированного диапазона осуществлять строго справа, без смещения вниз).

Также можно предложить небольшой и необязательный «тюнинг» созданных кубиков, потребность которого обусловлена тем, что в азарте «метания костей» выделение может сместиться на ячейку с формулой, которая при нажатии [Delete] удалится. Во избежание этого также могут быть предложены два варианта.

Вариант 3-1
Для ячеек листа можно установить защиту от изменений. Выделите весь лист, щёлкнув левой кнопкой мыши по участку между обозначениями строк и столбцов (того же самого можно добиться при использовании комбинации клавиш [Ctrl]+[A]):

Далее нужно щёлкнуть правой кнопкой мыши по какой-нибудь ячейке, в появившемся контекстном меню выбрать пункт «Формат ячеек…», после чего откроется одноимённое диалоговое окно, в котором надо переключиться на вкладку «Защита», где снять флажок «Защищаемая ячейка» (по умолчанию все ячейки листа являются защищаемыми):

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

Последний шаг – собственно включение защиты листа. Здесь следует переключиться на вкладку ленты «Рецензирование» и в секции «Изменения» нажать кнопку «Защитить лист»:

Появится диалоговое окно «Защита листа» – в нём вполне достаточно просто нажать кнопку «ОК»:

Вариант 3-2
Из эстетических соображений ячейки с формулами, выполняющими основную работу, можно «спрятать», заодно затруднив случайное их повреждение. Выделите строки, которые содержат формулы, подлежащие сокрытию:

Если теперь щёлкнуть по выделенной области правой кнопкой мыши, то появится контекстное меню, в котором будет команда «Скрыть» – выберите её и строки листа будут убраны с глаз:

В завершение остаётся лишь сказать, что Вариант 3-1 и Вариант 3-2 можно использовать как по отдельности, так и сразу оба – сначала скрыть ячейки, а потом включить защиту листа.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *