Перемешать существующий столбец несколько раз без повторов в любой строке - PullRequest
0 голосов
/ 22 мая 2019

Я использую VBA

У меня есть столбец целых чисел в массиве

Я запускаю массив через модуль рандомизатора и копирую его во второй столбец

Iзапустить массив через модуль рандомизатора и скопировать его в третий столбец

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

Проблема, по-моему, не может быть решенаприходят дубликаты в одной строке

IE:

    2   13   27   14
    27  27   13   5
    14  5    2    13
    13  2    14   27
    5   14   5    2

* столбцы намного длиннее

Я искал в Интернете, но все сосредоточены на создании случайных чисел без дубликатов,Я нашел тасование, но опять-таки оно кажется одномерным.

'// get a random number from 1 to the last row of column 25
For N1 = 1 To LastRow
Again:
    Randomize Timer
    RNum = Int(Rnd * (LastRow - 1 + 1) + 1)


'// this is where the values in "NArray" get shuffled around
    Temp = NArray(N1)
    NArray(N1) = NArray(RNum)
    NArray(RNum) = Temp

    ws5.Cells(N1, Lp) = NArray(N1)

'// this looks for duplicate numbers in the row
    Select Case Lp
        Case 26:    a = ws5.Cells(N1, Lp).Value + 0
                b = ws5.Cells(N1, Lp - 1).Value + 0
                If a = b Then
                    GoTo Again
                End If
        Case 27:    a = ws5.Cells(N1, Lp).Value + 0
                b = ws5.Cells(N1, Lp - 2).Value + 0
                c = ws5.Cells(N1, Lp - 1).Value + 0
                If a = b Then
                    GoTo Again
                ElseIf a = c Then
                    GoTo Again
                End If

...
'// тасованный массив вставляется в ячейки столбца 26 Для N1 = 1 To LastRow ws5.Cells (N1, Lp) = NArray (N1) Далее N1 Далее Lp

нет ошибок, за исключением того, что при сравнении значений ячеек в строке, переходящей от столбца к столбцу, пропускаются повторяющиеся значения, такие как строка 2, столбец 3может содержать «14», а в строке 2 столбца 4 содержится «14», он не зацикливается и не получает другое значение для столбца 4

...