下面是一种使用 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 列的内容会被清空

vba A列、B列、C列随机重组成一列

原文地址: http://www.cveoy.top/t/topic/iFgo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录