Sub FWP()
Dim i As Integer
Dim j As Integer
Dim n As Integer
n = Range("A1").Value
For i = 1 To n
For j = 1 To n
If Cells(i + 1, j) = 0 Then
Cells(i + 1, j).Value = Int(((n^2) - 1 + 1) * Rnd + 1)
ElseIf Cells(i + 1, j) <> 0 Then
Cells(i + 1, j).Value = Cells(i + 1, j).Value
End If
Next j
Next i
Я пытаюсь сделать часть домашнего задания вопроса, который просит, чтобы заполнить недостающие пробелы в магическом квадрате в VBA. Он настроен как матрица (n x n)
с числами n^2; пробелы, которые нужно заполнить, представлены нулями в матрице. Пока у меня есть код, который проверяет каждое отдельное значение ячейки и оставит значения в одиночку, если не 0, а если значение равно 0, оно заменяет их случайным числом между 1 и n^2. Проблема в том, что, очевидно, я получаю некоторые повторяющиеся значения, которые недопустимы, должно быть только 1 из каждого числа.VBA: добавление случайных чисел в сетке, что ARENT уже в сетке
Как мне закодировать его так, чтобы в сетке не было повторяющихся чисел? Я пытаюсь поставить в функции проверки, чтобы увидеть, если они уже в сети, но я не знаю, как сделать это
Благодарности
Я бы сначала просмотрел матрицу и сохранил значения в массиве или словаре, а затем, прежде чем записывать пробел со случайным числом, будет проверять, есть ли вновь созданный номер в массиве (или словаре). – CMArg
ОК, поэтому я поместил матрицу в массив, но до сих пор не знаю, как я буду ее кодировать, чтобы проверить, был ли только что сгенерированный номер в этом массиве. – HWhite
Привет и приветствуем StackOverflow. Пожалуйста, включите ваш код непосредственно в вопрос, чтобы люди могли легче помочь вам. –