выбирать случайные имена из списка

Я пытаюсь использовать формулу, которая позволит мне выбрать 183 имена случайным образом из списка из 355 имен. Мой лист excel будет выглядеть примерно так:

Names Random.Names Paty Oscar John Anna Jane Carlos Maria Jennifer Susan Kayla 

На моем фактическом листе у меня больше имен, но это всего лишь пример. Я использовал следующую формулу, но у меня есть несколько ячеек, которые показывают #REF после рандомизации.

 =IF(ROWS($1:1)>$E$2,"",INDEX($A$8:$A$355,RANDBETWEEN(1,354))) 

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

Это потому, что INDEX относительный, поэтому строка 8 равна 1, а строка 355 равна 355-8 + 1 = 348. Измените значение RANDBETWEEN на 1,348

Все, что больше числа упомянутых ячеек, приведет к ошибке.

 =IF(ROWS($1:1)>$E$2,"",INDEX($A$8:$A$355,RANDBETWEEN(1,348))) 

Или вы можете ссылаться на весь столбец и использовать 8,355:

 =IF(ROWS($1:1)>$E$2,"",INDEX($A:$A,RANDBETWEEN(8,355))) 

У вас нет 355 имен между A8 и A355 только 355-8 + 1.

Поэтому исправьте RANDBETWEEN ()

Следуя логике моего предыдущего андерсера

Вам нужно только открыть редактор VBA, вставьте следующий код:

  'By Julio Jesus Luna Moreno '[email protected] Option Base 1 Public Function UNIQRAND(a As Variant, b As Variant) As Variant Application.Volatile Dim k%, p As Double, flag As Boolean, x() As Variant k = 1 flag = False ReDim x(1) x(1) = Application.RandBetween(a, b) Do Until k = b - a + 1 Do While flag = False Randomize p = Application.RandBetween(a, b) 'Debug.Assert p = 2 resultado = Application.Match(p, x, False) If IsError(resultado) Then k = k + 1 ReDim Preserve x(k) x(k) = p flag = True Else flag = False End If Loop flag = False Loop UNIQRAND = x End Function 

Эта функция сделает трюк

 Public Function RANDNAMES(Rango As Range, HowMany As Integer) As Variant Dim n, p(), x(), i As Variant n = Rango.Rows.Count If n < HowMany Then MsgBox "Number of pairs must be less than number of total elements" Exit Function End If ReDim x(HowMany) ReDim p(n) p = UNIQRAND(1, n) For i = 1 To HowMany Step 1 x(i) = Application.Index(Rango, p(i)) Next i Debug.Print HowMany RANDNAMES = Application.Transpose(x) End Function 
  • Случайные числа Excel зависят от недели
  • MS Excel - выбор случайных имен из списка
  • Excel Randomize Decimal Number
  • Interesting Posts

    Могу ли я проверить значения в двух столбцах и всех строках, чтобы добавить условное значение?

    Ошибка Excel: удалены записи: Сортировка из части /xl/worksheets/sheet5.xml

    Перемещение строк из рабочего листа 1 в рабочий лист2 на основе значения ячейки в столбце AB и вставки как значения

    Как вставить динамическую таблицу из Excel в Word с помощью функции .Find

    Excel VBA: как преобразовать формулы в значения для последнего использованного столбца?

    Агрегация / манипуляция электронной таблицы

    как сохранить строку в формате «utf-8» в .xlsx, используя pandas to_exel (to_csv может сохранить его как .csv)

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

    Номер формата ios excel с цветом

    Отделить сложный текст от шаблонов чисел из одной строки

    Скрипты PowerShell для поиска файлов Excel с расширениями .xls и .xlsx

    График одного года, включая нулевые значения, которые должны быть скрыты

    промежуточный итог большого количества данных по двум столбцам

    Верните 0, когда дата <сегодня

    Как создать рабочую гиперссылку с более чем 255 символами в функции CONCATENATE () Excel?

    Давайте будем гением компьютера.