ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2179|回复: 10

[求助] 这个试卷的答案中选项ABCDEF的格式如何批量修改

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-1-8 20:19 | 显示全部楼层 |阅读模式
本帖最后由 rmajly 于 2022-1-8 20:21 编辑

     这是个word文档的试卷,里面的答案ABCDEF都连在一起了,举例如下(其中红色标注的字体,是准备修改后的样子):
      122. 患者女,63岁。右下腹及脐周隐痛3年,渐渐清瘦,近2个月来常有低热,体格检查发现右下腹可触及一6cm×4cm大小的包块,较硬,尚可推动,压痛,锁骨上及腹股沟区未触及肿大淋巴结,结合其他检查结果,该患者被确诊为右侧结肠癌。如果考虑进行西妥昔单抗治疗,为确定野生型还是突变型,该患者的手术标本切片后应该送的基因检测项目是
A EGFRB K-RASCVEGFRD B-RAFE ERCC-1F AKT(实际应该是:A EGFR      B K-RAS      C VEGFR     D B-RAF     E ERCC-1    F AKT
答案:B
      123. 患者男,49岁。进行性吞咽困难3个月余,体重近来明显减轻,伴呛咳,声嘶,查体:浅表淋巴结未及明显肿大。该患者同时出现远处转移,则化疗可选择的方案有
A DDP+5-FUB 希罗达C ADM+IFOD PTX+DDPE GEM+5-FUF CPT-11+DDP(实际应该是:A DDP+5-FU     B 希罗达     C ADM+IFO      D PTX+DDP      E GEM+5-FU     F CPT-11+DDP
答案:A,D,E,F
       题很多,想批量修改,请高人指点,谢谢!
aa.zip (18.09 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

发表于 2022-1-8 22:17 | 显示全部楼层
  1. Sub a_find_replace_answer()
  2.     ActiveDocument.Content.Find.Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "    \1.\3", 2
  3.     ActiveDocument.Content.Find.Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "    \1.\3", 2
  4.     ActiveDocument.Content.Find.Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "    \1.\3", 2
  5.     ActiveDocument.Content.Find.Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "    \1.\3", 2
  6.     ActiveDocument.Content.Find.Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "    \1.\3", 2
  7.     ActiveDocument.Content.Find.Execute "(A)( )([! ]*^13)", , , 1, , , , , , "\1.\3", 2
  8. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-8 22:54 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-8 23:27 | 显示全部楼层
还有一个有用的功能,不能试题之间没有空行,可以这么办:查找→(^13)([0-9])→高级→【勾选】使用通配符→替换→替换为→\1^13\2→全部替换

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-8 23:28 | 显示全部楼层
试题之间没有空行,正则可以这么搞定:查找→(^13)([0-9])→高级→【勾选】使用通配符→替换→替换为→\1^13\2→全部替换
试试?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-9 19:02 | 显示全部楼层

再麻烦您一下:发现一个问题,有的试卷,部分答案是纵向排列的,部分答案是横向排列的,VBA后,横向排的答案解决了,但是竖向排的答案运行宏以后,除答案A外,其他答案都会向后退几个空格,不太好看(见下图)。请教有什么好的办法解决。谢谢!


111.png
aa.zip (18.36 KB, 下载次数: 4)

TA的精华主题

TA的得分主题

发表于 2022-1-9 23:58 | 显示全部楼层
* 楼主,你好!——第一,请注意备份原文件(未处理的);第二,如果你的系统是 Win10x64(64位),请复制代码到空白文档后,再剪切下来,粘贴到 VBE 中执行。另外,建议可以把试卷页边距减小一些,让栏间距大一些,更好看(建议试卷要逐题审核,以免有错误之处)。
  1. Sub a_find_replace_answer_update0109()
  2.     With ActiveDocument.Content.Find
  3.         .Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "^t\1. \3", 2
  4.         .Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "^t\1. \3", 2
  5.         .Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "^t\1. \3", 2
  6.         .Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "^t\1. \3", 2
  7.         .Execute "([B-F])( )([! ]*^13)", , , 1, , , , , , "^t\1. \3", 2
  8.         .Execute "(A)( )([! ]*^13)", , , 1, , , , , , "\1. \3", 2
  9.         .Execute "(^13)(^t[B-F].)", , , 1, , , , , , "\2", 2
  10.         .Execute "(^t)(D.)", , , 1, , , , , , "^13\2", 2
  11.         .Execute "(答案):", , , 1, , , , , , "\1:", 2
  12.         .Execute "([A-F])(,)([B-F])", , , 1, , , , , , "\1\2 \3", 2
  13.         .Execute "([A-F])(,)([B-F])", , , 1, , , , , , "\1\2 \3", 2
  14.         .Execute "([A-F])(、)([B-F])", , , 1, , , , , , "\1, \3", 2
  15.         .Execute "([A-F])(、)([B-F])", , , 1, , , , , , "\1, \3", 2
  16.         .Execute "(^13)([0-9]{1,})([. ]{1,})", , , 1, , , , , , "\1\1\2. ", 2
  17.     End With
  18.    
  19.     With Selection
  20.         .WholeStory
  21.         With .Font
  22.             .NameFarEast = "宋体"
  23.             .NameAscii = "Times New Roman"
  24.         End With
  25.         .ParagraphFormat.TabStops.ClearAll
  26.         ActiveDocument.DefaultTabStop = CentimetersToPoints(4.6)
  27.         .ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(2.3) _
  28.             , Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
  29.         .HomeKey 6
  30.     End With
  31.    
  32.     Dim i As Paragraph
  33.     For Each i In ActiveDocument.Paragraphs
  34.         With i.Range
  35.             If .Text Like "答案:*" Then
  36.                 ActiveDocument.Range(Start:=.Start, End:=.Characters(3).End).Bold = True '答案加粗
  37.                 If .End <> ActiveDocument.Content.End Then
  38.                     With .Next(4, 1)
  39.                         If Asc(.Text) <> 13 Then
  40.                             .InsertBefore Text:="解析:"
  41.                             ActiveDocument.Range(Start:=.Start, End:=.Characters(3).End).Bold = True '解析加粗
  42.                         End If
  43.                     End With
  44.                     
  45.                 End If
  46.             End If
  47.         End With
  48.     Next
  49. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-10 00:32 | 显示全部楼层
413191246se 发表于 2022-1-9 23:58
* 楼主,你好!——第一,请注意备份原文件(未处理的);第二,如果你的系统是 Win10x64(64位),请复制 ...

收到,非常感谢!

TA的精华主题

TA的得分主题

发表于 2022-1-17 11:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-1-18 11:42 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-1 14:23 , Processed in 0.026749 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表