word或WPS文档怎么将选择题按首字母排序,并保留正确选项

去年十二月在网上找的方法做了一遍,结果现在再要做的时候忘记怎么操作的了,特来求教大神
具体效果如下:

这是原题,下面是当初处理后(也就是我现在想知道达到这个效果的操作步骤)
(这小图是针对上面4道原题的效果)
(这大图是去年成品效果)
下面讲下效果细节:
把选择题按第一个字的字母顺序排列
选择题后有正确答案的内容
选择题的其他错误答案不需要
最终成品的题目编号和原题编号一样(这一条可以省略不做)
求word大神告诉我要达到这效果该怎么完成
目前我的word版本为2007的,所以最好是word2007的操作过程或WPS文档的操作过程
为方便大神操作,特地复制前6题供大神试手
1、大部分软土的天然含水量为(B)。
A、10%~30%
B、30%~70%
C、70%~80%
D、80%~90%
2、标准贯击次数小于4,无侧限抗压强度小于50kPa且含水量大于的(B )黏土或标准贯击次数小于4且含水量大于30%的砂性土统称为软土。
A、40%
B、50%
C、60%
D、70%
3、地下管线施工必须遵循(A )的原则
A、先地下,后地上,先深后浅
B、先地上,后地下,先深后浅
C、先地下,后地上,先浅后深
D、先地上,后地下,先浅后深
4、土质路基压实时,各种压路机的碾压行驶速度最大不宜超过(C )。
A、2km/h
B、3km/h
C、4km/h
D、5km/h
5、沥青混合料的摊铺温度根据气温变化进行调节。一般正常施工控制在不低于110~130℃,不超过(D)。
A、135℃
B、145℃
C、155℃
D、165℃
6、当施工现场环境日平均气温连续5d 稳定低于(D ),或最低环境气温低于-3℃时,应视为进入冬期施工。
A、0℃
B、2℃
C、3℃
D、5℃

1ctrl+h 调出 替换对话框,查找内容输入:^13([!0-9]),替换为输入:^t\1,高级或更多选择“使用通配符”,点击  【全部替换】 按钮。

2、ctrl+f 调出 查找对话框,查找内容→[0-9]{1,}、 →高级或更多→ 勾选“使用通配符”→替换为→(留空,就是什么都不填)→点击【全部替换】按钮。

3、开始菜单→排序→【找到你要的排序方式】→确定。

4、开始菜单→编号→【找到你想要的编号】→确定。

5、还原答案选择项,ctrl+f 调出 查找对话框,查找内容→ ([ABCD]、)→高级或更多→ 勾选“使用通配符”→替换为→^13\1→点击【全部替换按钮。

6、最后完成图如下:


注意事项:

作为 Office 套件的核心程序, Word 提供了许多易于使用的文档创建工具,同时也提供了丰富的功能集供创建复杂的文档使用。哪怕只使用 Word 应用一点文本格式化操作或图片处理,也可以使简单的文档变得比只使用纯文本更具吸引力。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-06

打开你的文档,按 Alt + F11 进入 VBE,在左侧的工程资源管理器中新建一个模块,将下列代码复制进去,按 F5 运行即可。

Sub test()
    Dim i, a, b, j, result As Integer
    Dim str As String
    Dim issure As Boolean
    i = 1
    With ActiveDocument
        Do While i < .Paragraphs.Count
            issure = False
            str = .Paragraphs(i).Range.Text
            j = 1
            Do While j < Len(str)
                If Mid(str, j, 1) = " " Then
                    str = Left(str, j - 1) & Right(str, Len(str) - j)
                Else
                    j = j + 1
                End If
            Loop
            b = 1
            a = 0
            Do While a < Len(str)
                a = InStr(b, str, "A")
                If a = 0 Then Exit Do
                If ((Mid(str, a - 1, 1) = "(") Or (Mid(str, a - 1, 1) = "(")) And ((Mid(str, a + 1, 1) = ")") Or (Mid(str, a + 1, 1) = ")")) Then
                    result = 1
                    issure = True
                Else
                    b = a + 1
                End If
                If issure Then Exit Do
            Loop
            If Not (issure) Then
                a = 0
                b = 1
                Do While a < Len(str)
                    a = InStr(b, str, "B")
                    If a = 0 Then Exit Do
                    If ((Mid(str, a - 1, 1) = "(") Or (Mid(str, a - 1, 1) = "(")) And ((Mid(str, a + 1, 1) = ")") Or (Mid(str, a + 1, 1) = ")")) Then
                        result = 2
                        issure = True
                    Else
                        b = a + 1
                    End If
                    If issure Then Exit Do
                Loop
            End If
            If Not (issure) Then
                a = 0
                b = 1
                Do While a < Len(str)
                    a = InStr(b, str, "C")
                    If a = 0 Then Exit Do
                    If ((Mid(str, a - 1, 1) = "(") Or (Mid(str, a - 1, 1) = "(")) And ((Mid(str, a + 1, 1) = ")") Or (Mid(str, a + 1, 1) = ")")) Then
                        result = 3
                        issure = True
                    Else
                        b = a + 1
                    End If
                    If issure Then Exit Do
                Loop
            End If
            If Not (issure) Then
                a = 0
                b = 1
                Do While a < Len(str)
                    a = InStr(b, str, "D")
                    If a = 0 Then Exit Do
                    If ((Mid(str, a - 1, 1) = "(") Or (Mid(str, a - 1, 1) = "(")) And ((Mid(str, a + 1, 1) = ")") Or (Mid(str, a + 1, 1) = ")")) Then
                        result = 4
                        issure = True
                    Else
                        b = a + 1
                    End If
                    If issure Then Exit Do
                Loop
            End If
            If issure Then
                Select Case result
                Case 1
                    .Paragraphs(i + 2).Range.Delete
                    .Paragraphs(i + 2).Range.Delete
                    .Paragraphs(i + 2).Range.Delete
                Case 2
                    .Paragraphs(i + 1).Range.Delete
                    .Paragraphs(i + 2).Range.Delete
                    .Paragraphs(i + 2).Range.Delete
                Case 3
                    .Paragraphs(i + 1).Range.Delete
                    .Paragraphs(i + 1).Range.Delete
                    .Paragraphs(i + 2).Range.Delete
                Case 4
                    .Paragraphs(i + 1).Range.Delete
                    .Paragraphs(i + 1).Range.Delete
                    .Paragraphs(i + 1).Range.Delete
                End Select
                .Paragraphs(i).Range.Select
                Selection.MoveRight 1
                Selection.MoveLeft 1
                Selection.Delete
            End If
            i = i + 1
        Loop
    End With
End Sub

追问

上次貌似没用到这类代码,而且为什么显示错误代码

刚才又试了下,还是出现运行时错误,然后我点结束,回去看时,发现前面的18题出现了我要的效果,可是底下的题目没什么变化,而且刚才有一回我点调试,出现一行黄色底纹的一行代码(如下图)

追答

我用Office13调试的,可能是代码不兼容或者代码在你的文档运行出现BUG,私信我远程你

本回答被提问者采纳
第2个回答  2015-07-06
用段落排序功能,排序前,用查找替换功能对数据进行处理:
第1次,删除题干编号:
查找:[0-9]{1,}、
勾选使用通配符
替换为:空
全部替换;
第2次,合并段落:
查找:^13([A、,B、,C、,D、])
勾选使用通配符
替换为:^11\1
全部替换;
最后,按CTRL+A,全选文档,进行排序:开始--段落--排序。本回答被网友采纳
相似回答