excelVBA 要随机的排序,要怎么写代码丫

这个代码有组合了,我想要把组合随机排序,比如原本是 A1,A2,B1,B2,C1,C2,我想随机排序,类似A1,B2,C3,A2,B1,C3,随机就是了,不需要特定的顺序,怎么补代码丫

Sub test()
Dim ar(), br(), cr()
Dim i, j, k As Long
ar = Array("Shell", "Case", "Cover", "Backcover", "Back Cover", "housing", "Skin", "protection", "protector", "Protective", "Pouch", "Flip", "Holster", "Wallet", "bumper")
br = Array("A", "B")
ReDim cr((UBound(ar) + 1) * (UBound(br) + 1))
For i = 0 To UBound(ar)
For j = 0 To UBound(br)
cr(k) = ar(i) & " " & br(j)
k = k + 1
Next
Next
Range("A1").Resize(UBound(cr) + 1, 1) = Application.WorksheetFunction.Transpose(cr)
End Sub

Sub test()
Dim ar(), br(), cr(), tempr1(), tempr2()
Dim i, j, k, n As Long
ar = Array("Shell", "Case", "Cover", "Backcover", "Back Cover", "housing", "Skin", "protection", "protector", "Protective", "Pouch", "Flip", "Holster", "Wallet", "bumper")
br = Array("A", "B")
ReDim cr((UBound(ar) + 1) * (UBound(br) + 1) - 1)
ReDim tempr1((UBound(ar) + 1) * (UBound(br) + 1) - 1)
For i = 0 To UBound(ar)
    For j = 0 To UBound(br)
        tempr1(k) = ar(i) & " " & br(j)
        k = k + 1
    Next
Next
k = 0
Do While UBound(tempr1) >= 0
    Randomize
    cr(k) = tempr1(Int(Rnd() * (UBound(tempr1) + 1)))
    If UBound(tempr1) <> 0 Then GoSub Rtempr Else Exit Do
    k = k + 1
Loop
GoTo e
Rtempr:
n = 0
ReDim tempr2(UBound(tempr1) - 1)
For i = 0 To UBound(tempr1)
    If tempr1(i) <> cr(k) Then tempr2(n) = tempr1(i): n = n + 1
Next
ReDim tempr1(UBound(tempr2))
For i = 0 To UBound(tempr1)
    tempr1(i) = tempr2(i)
Next
Return
e:
Range("A1").Resize(UBound(cr) + 1, 1) = Application.WorksheetFunction.Transpose(cr)
End Sub

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-24
复制代码
出现对话框选择随机排序列的起始单元格位置

如果选择了一个单元格,那么从这个单元格开始直到数据末尾行进行随机排序。
如果选择了多个单元格,那么仅对这部分选中的单元格区域内进行单列随机排序。

其它解释略
Sub RndSort()

Dim rng As Range

GetRng:

Set rng = Application.InputBox("Please select Range:", , Selection.Address, Type:=8)

If rng.Columns.Count > 1 Then GoTo GetRng

n = rng.Count

If n = 1 Then

n = rng.End(4).Row - rng.Row + 1

Set rng = rng.Resize(n)

End If

arr = rng

Randomize

For i = 1 To n

r = Int(Rnd * (n - i + 1)) + i

t = arr(r, 1): arr(r, 1) = arr(i, 1): arr(i, 1) = t

Next

rng = arr

End Sub
复制代码

记住【数组洗牌法算法代码】,很有用的。

Randomize
For i = 1 To n
r = Int(Rnd * (n - i + 1)) + i
t = arr(r, 1): arr(r, 1) = arr(i, 1): arr(i, 1) = t
Next

一共就5行代码。请努力学习、记住这几句代码。
第2个回答  2016-04-07
这个代码有组合了,我想要把组合随机排序,比如原本是 A1,A2,B1,B2,C1,C2,我想随机排序,类似A1,B2,C3,A2,B1,C3,随机就是了,不需要特定的顺序,怎么补代码丫

Sub test()
Dim ar(), br(), cr()
Dim i, j, k As Long
ar = Array("Shell", "Case", "Cover", "Backcover", "Back Cover", "housing", "Skin", "protection", "protector", "Protective", "Pouch", "Flip", "Holster", "Wallet", "bumper")
br = Array("A", "B")
ReDim cr((UBound(ar) + 1) * (UBound(br) + 1))
For i = 0 To UBound(ar)
For j = 0 To UBound(br)
cr(k) = ar(i) & " " & br(j)
k = k + 1
Next
Next
Range("A1").Resize(UBound(cr) + 1, 1) = Application.WorksheetFunction.Transpose(cr)
End Sub
第3个回答  2016-03-30
具体要求是什么?

excelVBA 要随机的排序,要怎么写代码丫
Sub test()Dim ar(), br(), cr(), tempr1(), tempr2()Dim i, j, k, n As Longar = Array("Shell", "Case", "Cover", "Backcover", "Back Cover", "housing", "Skin", "protection", "protector", "Protective", "Pouch", "Flip", "Holster", "Wallet", "...

Excel VBA 数字随机分组的问题
要差不多一年 如果仅仅是上面的数组随机打乱次序的话 用下面的代码 Sub fdsa()Dim arr(1 To 10, 1 To 10)Dim i As ByteDim j As ByteFor j = 0 To 9 For i = 0 To 9 arr(i + 1, j + 1) = j + i * 10 NextNextFor i = 1 To 10 For j = 1 To 10 ...

求EXCEL的VBA代码,用“1、2、3、4”四个字符,随机生成排列组合_百度...
1、排列组合需要多少位数字 2、这四个数字是否可以重复?可以重复的,可以使用=RANDBETWEEN(1,4)如果还有具体要求,请进一步明确

请问如何在Excel中,将一列数据自动随机排列,并把结果自动生成为新的一...
写个VBA版本,代码如下:Sub A列随机排序()Dim rcA, i, w, k, c As LongDim s As StringrcA = Range("A" & Rows.Count).End(xlUp).RowFor i = 1 To rcA s = Range("A" & i) 'Debug.Print s Do Randomize w = Int((rcA * Rnd + 1)) If Range("B" ...

EXCEL中如何用VBA让数据根据条件,进行随机排序。具体问题看下图,先谢过...
Sub dd()Dim i As Integer, dic As Object, ii As Integer, xl As Integer, iii As Integer, arrSet dic = CreateObject("scripting.dictionary")ActiveSheet.Range("b1:b16").ClearContentsi = 1Do While i <= ActiveSheet.Range("A65536").End(xlUp).Row dic(ActiveSheet.Range("A" &...

excel中利用VBA生成一列随机字符串代码
用下面的VBA代码可以在A1:A100区域中生成由大小写字母和数字组成的12位长度的随机字符串,从中挑选几个作为密码用还是不错的。在Excel中按Alt+F11打开VBA编辑器,双击“工程”窗口中的某个工作表名称,在右侧的代码窗口中输入下列代码:Sub MakeRandomString()Dim J As Integer Dim K As Integer Dim ...

急求一个在excel中使用的随机抽签排序程序,要求抽签前所有备抽人员在e...
1、A1:A10输入公式=rand()2、在B1:B10输入公式B1=rank(A1,$A$1:$A$10),下拉到B10 3、在E1:E10输入1-10 4、在F1:F10输入人名 5、在C1输入公式 C1=VLOOKUP(B1,$E$1:$F$10,2,0),下拉到C10 6、启动按住F9,放开停止即可,无需其他操作,如果不想让其他人看到ABEF列的数字,把字体调...

excel怎么用宏代码编随机生成数字代码?
首先,打开Excel,使用VBA编辑器,编写宏代码。宏代码如下:Sub 随机数() Dim ar(), a%, b% a = [H3]: b = [I3] '如果要改变起始和终止值存在的单元格,就在这改。 ReDim ar(a To b, 1 To 1) For i = a To b ar(i, 1) = Int((b - a + 1) * Rnd) + a Next ...

VBA生成特定范围内的随机数| VBA示例教程
首先初始化随机数生成器,使用 Randomize 函数。这步骤对于确保生成的随机数序列具有更好的随机性至关重要,因为它使用当前时间作为初始化值的来源,使得每次运行时随机数序列不同。要生成100个在 [1,1000] 之间的整数,可以使用以下 VBA 代码:vba Sub GenerateRandomNumbers()Dim arr() As Integer Dim...

在VBA中编写排序代码--Sort方法
运行代码后的结果如下图。进一步,添加第二个排序字段,代码如下:Sub testSort2()Dim rng As Range Set rng = Range("A1:G10")rng.Sort Key1:="性别", Order1:=xlAscending, Key2:="总分", Order2:=xlDescending, Header:=xlYes End Sub Excel将依据“性别”升序排列,再依据“总分”降序...

相似回答