如何用excel把1-32列,随机乱序排列

问题如下,有A1-A32这32列数据,在不打乱每列内容的情况下,把列随机打乱重新排序,就是本来顺序是A1.A2.A3.A4.A5.A6........我想随机把列数排乱,就是变成A3.A1.A32.A16.A10.A5.A28.........这样,但每列单元格里边的内容不可以变乱,就是列乱,内容不乱,谁可以帮我做一下,谢谢
对,是行,我说错了,是A1-A32行,将A列的每行打乱,重新排序,但单元格内容不能变,下边是一位高手给我的代码,这个好是好,会把A列的重新排序到C列,但是A列的内容就会消失不见了,下次要再排,就又要重新复制到A列才可以排,谁可以再帮做一个更好的

Sub bbb()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = WorksheetFunction.CountA(Range("a1:a32"))
c = 1
Do While c <= a
b = Int(Rnd * a) + 1
If Cells(b, 1).Value <> "" Then
Cells(b, 1).Select
Selection.Cut
Cells(c, 3).Select
ActiveSheet.Paste
c = c + 1
Else
End If
Loop
End Sub

我晕。。。A1-A32 是32行数据吧?

且不管它是行是列,原理都一样,需要增加一辅助行或列,里面用随机函数 Rand()取值,然后按这个行或列排序,就行了。
=======
Sub bbb()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = WorksheetFunction.CountA(Range("a1:a32"))
c = 1
Do While c <= a
b = Int(Rnd * a) + 1
If Cells(b, 1).Value <> "" Then
Cells(b, 1).Select
Selection.Copy '此处改一下,原是剪切,改为复制。
Cells(c, 3).Select
ActiveSheet.Paste
c = c + 1
Else
End If
Loop
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-25
用excel把1-32列,随机乱序排列的方法如下:
1、辅助列法,在数据右侧的空白列中输入公式=rand(),然后根据这个空白列进行排序,就可以了。
2、小程序法,在vba输入输入如下内容,执行后,就可以得到结果了。
Sub bbb()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = WorksheetFunction.CountA(Range("a1:a32"))
c = 1
Do While c <= a
b = Int(Rnd * a) + 1
If Cells(b, 1).Value <> "" Then
Cells(b, 1).Select
Selection.Copy '此处改一下,原是剪切,改为复制。
Cells(c, 3).Select
ActiveSheet.Paste
c = c + 1
Else
End If
Loop
End Sub本回答被网友采纳
第2个回答  2009-08-02
你所说的是32行。你在A列前插入一列。然后在A1格中输入=rand(),再下拉到第32行,这样每行中就有一个随机的数值,再按A列排序就可以了。
第3个回答  2009-08-02
你说的是A1,A2.......都是A列中的每行吗?那列都是自动有序的排列,这个excel程序就是这样设计的,怎么可以打乱,晕!!!!!就说要做什么吧!
第4个回答  2009-08-02
楼上有两位说的用随机数排序的方法很好。
程序改一下也可达到要求:

Sub bbb()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = WorksheetFunction.CountA(Range("a1:a32"))
c = 1
Do While c <= a
b = Int(Rnd * a) + 1
If Cells(b, 2) <> 1 Then
Cells(b, 2) = 1
Cells(b, 1).Select
Selection.Copy
Cells(c, 3).Select
ActiveSheet.Paste
c = c + 1
End If
Loop
Columns(2) = ""
End Sub