用VBA在Word中随机打乱单词表,进行分列

一、效果展示(以下是三次随机打乱的结果)

二、代码

vbscript 复制代码
Sub 随机分单词到后面的单元格()
    Dim C1 As Cell
    Dim str, str1, a
    Dim shuffledArray() As Variant
    Set C1 = Selection.Range.Tables(1).Cell(1, 1)
    str = C1.Range.text
    str = mid(str, 3, Len(str) - 4)
    str1 = Split(str, vbCr)
    
        ' 获取数组大小
    arraySize = UBound(str1) - LBound(str1) + 1
    halfSize = arraySize \ 2
    
    ' 生成一个打乱的数组
    ReDim shuffledArray(LBound(str1) To UBound(str1))
    For i = LBound(str1) To UBound(str1)
        shuffledArray(i) = str1(i)
    Next i
    
    ' 打乱数组
    Call 随机打乱数组(shuffledArray)
    
    ' 分配到两个新数组
    ReDim group1(LBound(shuffledArray) To halfSize - 1)
    ReDim group2(halfSize To UBound(shuffledArray))
    
    For i = LBound(shuffledArray) To UBound(shuffledArray)
        If i < halfSize Then
            group1(i) = shuffledArray(i)
        Else
            group2(i) = shuffledArray(i)
        End If
    Next i
    
    ' 输出结果
    For Each a In group1
        str2 = str2 & a & vbCr
    Next
    For Each a In group2
        str3 = str3 & a & vbCr
    Next
    Selection.Range.Tables(1).Cell(1, 2).Range.text = str2
    Selection.Range.Tables(1).Cell(1, 3).Range.text = str3

End Sub

Sub 随机打乱数组(ByRef arr() As Variant)
    Dim i As Integer
    Dim j As Integer
    Dim temp As Variant
    Dim n As Integer
    
    n = UBound(arr) - LBound(arr) + 1
    
    For i = LBound(arr) To UBound(arr)
        j = Int((UBound(arr) - LBound(arr) + 1) * Rnd + LBound(arr))
        temp = arr(i)
        arr(i) = arr(j)
        arr(j) = temp
    Next i
End Sub
相关推荐
玩泥巴的17 小时前
.NET驾驭Word之力:数据驱动文档 - 邮件合并与自定义数据填充完全指南
c#·word·.net·com互操作
揭老师高效办公3 天前
Word和WPS文字如何从特定的页开始编号(页码)?
word·wps
secondyoung3 天前
Markdown转换为Word:Pandoc模板使用指南
开发语言·经验分享·笔记·c#·编辑器·word·markdown
广都--编程每日问4 天前
deepseek 的对话json导出成word和pdf
pdf·json·word·deepseek·exprot
疯癫的老码农4 天前
【word解析】从OLE到OMML:公式格式转换的挑战与解决方案
java·spring boot·spring·word
睿思达DBA_WGX4 天前
使用 python-docx 库操作 word 文档(1):文件操作
开发语言·python·word
专注VB编程开发20年5 天前
VB6.0找不到该引用word,excel“Microsoft Excel 16.0 Object Library”解决方法
word·excel·vba·vsto
揭老师高效办公6 天前
Word和WPS文字表格内的文字无法垂直居中?这样设置
word·wps
孤客网络科技工作室6 天前
Python - 100天从新手到大师:第二十六天Python操作Word和PowerPoint文件
python·word·powerpoint
【ql君】qlexcel6 天前
wps word添加水印
word·wps·水印·图片水印·多行水印