使用VBA对随机表进行排序

问题描述 投票:0回答:1

我有一个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
excel vba sorting random
1个回答
0
投票

你想在宏中使用avoid the use of Activate and Select

在删除重复项之前,您需要将公式的结果转换为实际值,因为排序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

我也不清楚你是否想要对值进行排序(如问题标题中所述,或删除重复项(这是您的代码所做的)

© www.soinside.com 2019 - 2024. All rights reserved.