Как вам такой заголовок? Название относится к тому факту, что вам может потребоваться заполнить диапазон ячеек серией чисел в случайном порядке. Например, вы можете заполнить 52 ячейки числами от 1 до 52 в случайном порядке. (Это похоже на вытягивание карт из перетасованной колоды, отсюда и название подсказки.)

Очевидно, что нет встроенной функции Excel, обеспечивающей такую ​​возможность, поэтому вам остается работать с макросами. К счастью, создать такой макрос не так уж и сложно. Следующий макрос отлично подойдет:

Sub FillRand()

Dim nums() As Integer     Dim maxval As Integer     Dim nrows As Integer, ncols As Integer     Dim j As Integer, k As Integer     Dim Ptr As Integer     Randomize

Set s = Selection     maxval = s.Cells.Count     nrows = s.Rows.Count     ncols = s.Columns.Count

ReDim nums(maxval, 2)



'Fill the initial array     For j = 1 To maxval         nums(j, 1) = j         nums(j, 2) = Int((Rnd * maxval) + 1)

Next j

'Sort the array based on the random numbers     For j = 1 To maxval - 1         Ptr = j         For k = j + 1 To maxval             If nums(Ptr, 2) > nums(k, 2) Then Ptr = k         Next k         If Ptr <> j Then             k = nums(Ptr, 1)

nums(Ptr, 1) = nums(j, 1)

nums(j, 1) = k             k = nums(Ptr, 2)

nums(Ptr, 2) = nums(j, 2)

nums(j, 2) = k         End If     Next j

'Fill in the cells     Ptr = 0     For j = 1 To nrows         For k = 1 To ncols             Ptr = Ptr + 1             s.Cells(j, k) = nums(Ptr, 1)

Next k     Next j End Sub

Этот макрос использует двумерный массив (nums), чтобы определить, какие числа использовать и в каком порядке они должны использоваться. В начале макроса массив заполняется статическим числом (от 1 до количества ячеек) и случайным числом от 1 до количества ячеек. Это второе число затем используется для сортировки массива. После того, как массив сохранен, легко разместить исходные числа в ячейках.

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

Чтобы использовать макрос, начните с выбора ячеек, которые вы хотите заполнить последовательными значениями в случайном порядке. Когда вы запускаете макрос, этот диапазон заполняется. Например, если вы выберете десять ячеек и затем запустите макрос, эти ячейки будут заполнены числами от 1 до 10 в случайном порядке.

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2280) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Playing_with_a_Full_Deck [Игра с полной колодой].