Случайно заполните таблицу из 25 значений, которые поступают из набора из 30 значений?

Я хочу сделать серию таблиц, каждая из которых содержит 25 значений, которые поступают из набора из 30 значений. Как я могу быстро и случайным образом создавать эти таблицы? Мне интересно, есть ли способ в Excel, или мне нужно что-то программировать? Если да, то какой язык был бы самым простым (Python, C, Java)?

Изменить: 25 значений не будут содержать повторений. Другими словами, я ищу случайные комбинации (30C25) значений.

В конечном итоге вы можете добавить следующую пользовательскую функцию User-Defined, а затем использовать ее как формулу массива. Добавьте код в модуль кода Module1:

Public Function RandUnique(src As Range) As Variant Dim v As Variant: v = src Randomize Dim i As Integer, j As Integer, temp As Variant For i = 1 To src.Rows.count j = 1 + Int(Rnd * src.Rows.count) temp = v(i, 1): v(i, 1) = v(j, 1): v(j, 1) = temp Next RandUnique = v End Function 

Как только вы добавили этот UDF,

 Select the destination range, enter in the formula bar the following formula =RandUnique($A$1:$A$30) ' <~~ set it to your source range of 30 values Then press Ctrl+Shift+Enter 

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

Назовите список ваших тридцати значений в Excel в строках больше 25 (например, List30 ), затем в A1 скопированы до A25 и все скопированы в соответствии с:

 =INDEX(List30,RANDBETWEEN(1,30)) 

Чтобы исключить повторы (а не случайные варианты), вы можете ввести свой список в A1: A30 и в B1, скопированный в соответствии с требованиями:

 =RAND() 

затем сортируйте A: B в столбце B и скопируйте A1: A25, чтобы вставить, скажем, в D1. Таким образом генерируется только один набор (сортировка / копирование / вставка должна повторяться после каждой вставки).

Вот интересный способ, который не требует VBA и никакой ручной сортировки.

  • Введите список источников в диапазоне A1: A30.

  • В ячейку B1 введите эту формулу:

    =CHOOSE(RANDBETWEEN(1,7),7,11,13,17,19,23,29)

  • В диапазоне C1: C30 введите следующую формулу:

    =INDEX(A$1:A$30,MOD(ROWS(A$1:J1)*B$1,30))

  • В ячейку D1 введите эту формулу:

    =RANDBETWEEN(1,30)

  • Теперь выберите любые 25 смежных вертикальных и пустых ячеек и введите следующую формулу:

    =INDEX($C$1:$C$30,MOD(D$1+ROWS($A$1:$J1),30)+1)

Теперь скопируйте 25 ячеек и вставьте значения где-то для вашей 1-й таблицы. Нажмите F9 на клавиатуре, чтобы получить свежий 25; скопируйте и вставьте как значения где-то для вашей второй таблицы. Нажмите F9 на клавиатуре, чтобы получить свежий 25; копировать и вставлять в качестве значений где-то для вашей третьей таблицы. Продолжайте повторять столько таблиц, сколько вам нужно.

,

Обратите внимание, что, хотя это будет выглядеть очень случайным (без повторов), оно не является случайным. Это сложная интерференционная картина, которая будет казаться совершенно случайной, если вы не будете Человеком Дождя .

  • Как переназначить имя в другие ячейки в Excel?
  • Excel Countifs на основе ячейки, содержащей текст
  • Формула Excel, объединяющая MATCH, INDEX и OFFSET
  • Несколько неравномерных инвестиций - текущая стоимость
  • Исходные критерии countif
  • Как разбить формулу чисел в ячейках Excel на отдельные столбцы?
  • Имя отдельной вкладки Excel в ячейке
  • Отсутствующие данные в Excel между двумя столбцами
  • Обновить сводные таблицы, но не внешние источники данных
  • Максимальное количество экземпляров (текст + число) с фильтрацией определенной части текста в excel
  • Ошибка с DateDif в Excel
  • Давайте будем гением компьютера.