Сортировка случайной таблицы с использованием VBA - PullRequest
0 голосов
/ 13 марта 2019

У меня есть код VBA для генерации случайных значений, а затем генерировать случайные значения для сгенерированных случайных значений. Я положил их в таблицу и хочу отсортировать их в порядке возрастания на основе случайных значений в первом столбце. Тем не менее, я использовал несколько кодов и попробовал это, но я получаю ошибку каждый раз. Кто-нибудь знает, как это решить? Мой код выглядит следующим образом:

Sub Button1_Click()

Range("A2:A38").Select
 ActiveSheet.Range("$A$2:$A$38").Value = "=RANDBETWEEN(1,12)"

 Range("B2:B38").Select
 ActiveSheet.Range("$B$2:$B$38").Value = "=RANDBETWEEN(1,INDEX({2,2,8,8,8,8,4,2,8,10,4,8},A2))"

Application.Calculate

Range("A2:B38").Select
 ActiveSheet.Range("$A$2:$B$38").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo



 ActiveWorkbook.Save


End Sub

1 Ответ

0 голосов
/ 13 марта 2019

Вы хотите избегать использования Активировать и Выбрать в своих макросах

Перед удалением дубликатов необходимо преобразовать результат формул в фактические значения, поскольку сортировка формул RANDBETWEEN приведет только к новым случайным числам:

Range("A2:A38").Formula = "=RANDBETWEEN(1,12)"

Range("B2:B38").Formula = "=RANDBETWEEN(1,INDEX({2,2,8,8,8,8,4,2,8,10,4,8},A2))"

Range("A2:B38").Value = Range("A2:B38").Value

ActiveSheet.Range("$A$2:$B$38").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

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

...