vba A列、B列、C列随机重组成一列
下面是一种使用 VBA 在 A 列、B 列、C 列随机重组成一列的方法:
Sub RandomReorder()
Dim rngA As Range, rngB As Range, rngC As Range
Dim rngCombined As Range
Dim cell As Range
Dim i As Integer
'设置 A 列、B 列、C 列的范围
Set rngA = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Set rngB = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
Set rngC = Range("C1:C" & Cells(Rows.Count, 3).End(xlUp).Row)
'将 A 列、B 列、C 列合并成一列
Set rngCombined = Range("D1")
rngA.Copy rngCombined
Set rngCombined = Range(rngCombined, rngCombined.End(xlDown).Offset(rngB.Rows.Count - 1))
rngB.Copy rngCombined
Set rngCombined = Range(rngCombined, rngCombined.End(xlDown).Offset(rngC.Rows.Count - 1))
rngC.Copy rngCombined
'随机重排合并后的列
For i = rngCombined.Rows.Count To 2 Step -1
Set cell = rngCombined.Cells(i, 1)
cell.Cut
rngCombined.Cells(Application.WorksheetFunction.RandBetween(1, i - 1), 1).Insert Shift:=xlDown
Next i
'删除 A 列、B 列、C 列的内容
rngA.ClearContents
rngB.ClearContents
rngC.ClearContents
End Sub
请将以上代码复制到 VBA 编辑器中的模块中,然后运行该宏即可实现 A 列、B 列、C 列随机重组成一列。结果会显示在 D 列中,并且 A 列、B 列、C 列的内容会被清空
原文地址: http://www.cveoy.top/t/topic/iFgo 著作权归作者所有。请勿转载和采集!