Выбор случайных имен (Microsoft Excel)
Обычная задача для многих людей — выбрать несколько случайных имен из большого списка. Например, вы можете проводить конкурс для своего сообщества, и в нем приняли участие 1000 человек. С их именами в каждой строке таблицы вам может быть интересно, как выбрать определенное количество имен случайным образом.
Как это часто бывает с Excel, есть несколько разных подходов. Каждый подход, рассмотренный в этом совете, предполагает, что имена, которые вам нужно выбрать, перечислены в ячейках с A1 по A1000.
Конечно, ваш диапазон имен может быть короче или длиннее, но дело в том, что они находятся в смежных ячейках в столбце A. В примерах также предполагается, что вам нужно выбрать 15 имен случайным образом из списка.
Первый подход — использовать функцию ИНДЕКС. Введите следующую формулу в ячейки B1: B15:
=INDEX(A:A,INT((RAND()*1000)+1),1)
В аналогичной формуле используется функция СМЕЩЕНИЕ:
=OFFSET($A$1,ROUNDUP(RAND()*1000,0),0,1,1)
Возможно, но маловероятно, что вы дважды получите одно и то же имя в итоговом списке. (Маловероятность возникает из-за размера исходного списка. Чем больше список, тем меньше вероятность того, что в извлеченном списке будут дубликаты.) Если вы все же получаете повторяющееся имя, просто принудительно пересчитайте свой рабочий лист, нажав F9 . Каждый раз при пересчете список извлеченных имен создается заново.
Другой потенциальный подход требует использования нескольких столбцов. Просто выполните следующие действия:
-
Введите = СЛЧИС () в ячейку B1.
-
Введите следующую формулу в ячейку C1:
-
Выберите диапазон B1: C1 и заполните его до строки 1000.
-
Выберите диапазон B1: C1000.
-
Нажмите Ctrl + C, чтобы скопировать диапазон в буфер обмена.
-
Откройте вкладку «Главная» на ленте.
-
Щелкните стрелку вниз под инструментом «Вставить» и выберите «Специальная вставка». Excel отображает диалоговое окно Специальная вставка. (См. Рис. 1.)
-
Убедитесь, что выбран переключатель «Значения».
-
Щелкните ОК. Теперь у вас есть статические значения в B1: C1000, что означает, что они не будут меняться каждый раз при пересчете рабочего листа.
-
Выберите ячейку в столбце C.
-
Откройте вкладку «Данные» на ленте.
-
Щелкните инструмент «Сортировка». Excel отображает диалоговое окно «Сортировка». (См. Рис. 2.)
-
Щелкните ОК. Таблица (диапазон A1: C1000) отсортирована в соответствии со значениями в столбце C.
В результате столбец C теперь содержит рейтинг всех случайных чисел в столбце B. Первые 15 строк содержат ваши случайные имена.
При таком подходе вы также могли бы полностью исключить столбец C и просто отсортировать список на основе статических случайных значений в столбце B.
Опять же, топ-15 будут вашими случайными именами.
Конечно, есть любое количество макросов, которые вы можете использовать для решения этой проблемы. Кодирование любого макроса будет аналогичным, полагаясь на функцию VBA RND для генерации случайных чисел. Из всех возможных решений для макросов, возможно, следующее является наиболее уникальным и предлагает некоторые преимущества, недоступные с решениями для рабочих тетрадей, которые обсуждались до сих пор:
Sub GetRandom() Dim TempDO As Variant Dim iRows As Integer Dim iCols As Integer Dim iBegRow As Integer Dim iBegCol As Integer Dim sCells As String Dim J As Integer Dim iWantRow As Integer Set TempDO = New DataObject iRows = Selection.Rows.Count iCols = Selection.Columns.Count iBegRow = Selection.Row iBegCol = Selection.Column If iRows < 16 Or iCols > 1 Then MsgBox "Too few rows or too many columns" Else Randomize Timer sCells = "" For J = 1 To 15 iWantRow = Int(Rnd() * iRows) + iBegRow sCells = sCells & Cells(iWantRow, iBegCol) & vbCrLf Next J TempDO.SetText sCells TempDO.PutInClipboard End If End Sub
Следует отметить, что этот макрос определяет — сразу после объявления переменных — новый DataObject и назначает его переменной TempDO. Если макрос не работает в этой строке кода, это просто означает, что вам нужно указать VBA, чтобы он ссылался на соответствующую библиотеку:
-
В редакторе VBA выберите «Ссылки» в меню «Инструменты». VBA отображает диалоговое окно «Ссылки». (См. Рис. 3.)
-
Прокрутите список ссылок, пока не увидите библиотеку под названием Microsoft Forms Object Library. (В название ссылки может быть включен номер версии, например, Microsoft Forms 2.0 Object Library.)
-
Убедитесь, что установлен флажок слева от библиотеки объектов.
-
Щелкните ОК.
Чтобы использовать макрос, просто выберите имена, из которых вы хотите выбрать 15 случайных имен. В приведенных выше примерах вы должны выбрать диапазон A1: A1000. Затем макрос извлекает 15 имен случайным образом из ячеек и помещает их в буфер обмена. Когда вы запустите макрос, вы можете вставить содержимое буфера обмена в любое место. Каждый раз при запуске макроса выбирается другая группа из 15 человек.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (12475) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Selecting_Random_Names [Выбор случайных имен]
.