ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 有难度的提取每个试题选择项到题前或题后

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-18 13:04 | 显示全部楼层 |阅读模式
本帖最后由 考试加油站 于 2014-9-18 13:05 编辑

求提取每个试题选择项到题前或题后)

求提取每个试题选择项到题前或题后).rar (110.71 KB, 下载次数: 62)


TA的精华主题

TA的得分主题

发表于 2014-9-18 17:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 周星骋 于 2014-9-18 17:43 编辑

我发现最近总是跟“替换”卯上了。
这里只做一下楼主的单项选择题。

分析规律:
1、题号虽然用阿拉数字+顿号,但大多数是 Word 自动编号功能生成的,少数是手工编号,所以这个规律不可取。
2、每道选择题预留填答案的位置,是下划线字符,应该至少都有2个下划线吧,这个规律可取,即“__”。
3、单选题答案都已经标记过。第1题至第41题是:加粗、突出显示黄色;第42题至第931题是:突出显示黄色。所以这里也有共同规律,即:突出显示。

难点:
无论是“查找内容”还是“替换为”,只能给整体内容限定格式,不能单独给某个表达式或字符串限定格式。
所以想一次性根据“突出显示”替换成功,有难度。
只得分两步进行:
首先,给“突出显示”内容前面加个标记,就加勾勾“√”吧。
然后,从“__”查找到“√”,就有依据了。

开工:
(注:文档的大标题也突出显示了,只得提前手工处理一下,这里略去不计。)
第1步替换:
  不勾选“使用通配符”;
  查找内容:啥都不填,只点击“更多”→“格式”→“突出显示”;
  替换为:“√”后面跟“查找内容”,即:

  1. √^&
复制代码


  点击“全部替换”按钮。
如下图:
第1次替换.png

第2步替换:
  勾选“使用通配符”;去掉“突出显示”;
  查找内容:(两根下划线)(任意字符串)勾勾(任意单个的大写英文半角字母),即:

  1. (__)(*)√([A-Z]{1})
复制代码


  替换为:第1个、第3个、第2个、第3个表达式,即:

  1. \1\3\2\3
复制代码


  点击“全部替换”按钮。
如下图:
第2次替换.png

缺点:
 做出来的单选题答案中,没有去掉突出显示或加粗,没有加上下划线。期待高手处理。

录制成宏:
多余的代码我懒得处理。

  1. Sub 单选题填现成答案()
  2. ' 周星骋 编制
  3.     Selection.Find.ClearFormatting
  4.     Selection.Find.Highlight = True
  5.     Selection.Find.Replacement.ClearFormatting
  6.     With Selection.Find
  7.         .Text = ""
  8.         .Replacement.Text = "√^&"
  9.         .Forward = True
  10.         .Wrap = wdFindContinue
  11.         .Format = True
  12.         .MatchCase = False
  13.         .MatchWholeWord = False
  14.         .MatchByte = False
  15.         .MatchWildcards = False
  16.         .MatchSoundsLike = False
  17.         .MatchAllWordForms = False
  18.     End With
  19.     Selection.Find.Execute Replace:=wdReplaceAll
  20.     Selection.Find.ClearFormatting
  21.     Selection.Find.Replacement.ClearFormatting
  22.     With Selection.Find
  23.         .Text = "(__)(*)√([A-Z]{1})"
  24.         .Replacement.Text = "\1\3\2\3"
  25.         .Forward = True
  26.         .Wrap = wdFindContinue
  27.         .Format = False
  28.         .MatchCase = False
  29.         .MatchWholeWord = False
  30.         .MatchByte = False
  31.         .MatchAllWordForms = False
  32.         .MatchSoundsLike = False
  33.         .MatchWildcards = True
  34.     End With
  35.     Selection.Find.Execute Replace:=wdReplaceAll
  36. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-9-18 18:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
索性好人做到底。
再做两次替换。

第3次替换:
查找内容:
  不勾“使用通配符”;
  神马都不填;
  Ctrl+B “加粗”、选上“突出显示”。
替换为:
  “非加粗”、“非突出显示”。
如下图:
第3次替换.png

第4次替换:
查找内容:
  去掉“加粗”、“突出显示”;
  勾上“使用通配符”;
  (两根下划线)(大写英文半角的单个字母),即:
(__)([A-Z]{1})
替换为:
  去掉“非加粗”、“非突出显示”;
  第1个、第2个表达式,即:
\1\2
如下图:
第4次替换.png

明天再来,将4步一并录制成宏。

楼主目前是V4级别高手,可以批评我用4步替换的办法蠢,但不可侮辱我的苦劳。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-18 18:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
周星骋 发表于 2014-9-18 18:03
索性好人做到底。
再做两次替换。

感谢热心帮助,一会研究。先谢谢

TA的精华主题

TA的得分主题

发表于 2014-9-18 18:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
纠正一下3楼。
第3步替换中,“查找内容”不要“加粗”,“替换为”也不要“非加粗”。因为“加粗”在楼主整篇单选答案中不是一以贯之。
第4步替换中,“替换为”里少说了一个“特殊格式”→“字体”→“下划线”。

上述4个替换步骤已经录制成一个完整的宏了,
(还是未整理多余的代码),
如下:

  1. Sub 单选题填现成答案()
  2. ' 周星骋 编制
  3. Selection.Find.ClearFormatting
  4. Selection.Find.Highlight = True
  5. Selection.Find.Replacement.ClearFormatting
  6. With Selection.Find
  7. .Text = ""
  8. .Replacement.Text = "√^&"
  9. .Forward = True
  10. .Wrap = wdFindContinue
  11. .Format = True
  12. .MatchCase = False
  13. .MatchWholeWord = False
  14. .MatchByte = False
  15. .MatchWildcards = False
  16. .MatchSoundsLike = False
  17. .MatchAllWordForms = False
  18. End With
  19. Selection.Find.Execute Replace:=wdReplaceAll
  20. Selection.Find.ClearFormatting
  21. Selection.Find.Replacement.ClearFormatting
  22. With Selection.Find
  23. .Text = "(__)(*)√([A-Z]{1})"
  24. .Replacement.Text = "\1\3\2\3"
  25. .Forward = True
  26. .Wrap = wdFindContinue
  27. .Format = False
  28. .MatchCase = False
  29. .MatchWholeWord = False
  30. .MatchByte = False
  31. .MatchAllWordForms = False
  32. .MatchSoundsLike = False
  33. .MatchWildcards = True
  34. End With
  35. Selection.Find.Execute Replace:=wdReplaceAll
  36. Selection.Find.ClearFormatting
  37. Selection.Find.Replacement.ClearFormatting
  38. With Selection.Find
  39. .Text = "(__)(*)√([A-Z]{1})"
  40. .Replacement.Text = "\1\3\2\3"
  41. .Forward = True
  42. .Wrap = wdFindContinue
  43. .Format = False
  44. .MatchCase = False
  45. .MatchWholeWord = False
  46. .MatchByte = False
  47. .MatchWildcards = False
  48. .MatchSoundsLike = False
  49. .MatchAllWordForms = False
  50. End With
  51. Application.WindowState = wdWindowStateNormal
  52. Selection.Find.ClearFormatting
  53. Selection.Find.Highlight = True
  54. Selection.Find.Replacement.ClearFormatting
  55. Selection.Find.Replacement.Highlight = False
  56. With Selection.Find
  57. .Text = ""
  58. .Replacement.Text = ""
  59. .Forward = True
  60. .Wrap = wdFindContinue
  61. .Format = True
  62. .MatchCase = False
  63. .MatchWholeWord = False
  64. .MatchByte = False
  65. .MatchWildcards = False
  66. .MatchSoundsLike = False
  67. .MatchAllWordForms = False
  68. End With
  69. Selection.Find.Execute Replace:=wdReplaceAll
  70. Selection.Find.ClearFormatting
  71. Selection.Find.Replacement.ClearFormatting
  72. Selection.Find.Replacement.Font.Underline = wdUnderlineSingle
  73. With Selection.Find
  74. .Text = "(__)([A-Z]{1})"
  75. .Replacement.Text = "\1\2"
  76. .Forward = True
  77. .Wrap = wdFindContinue
  78. .Format = True
  79. .MatchCase = False
  80. .MatchWholeWord = False
  81. .MatchByte = False
  82. .MatchAllWordForms = False
  83. .MatchSoundsLike = False
  84. .MatchWildcards = True
  85. End With
  86. Selection.Find.Execute Replace:=wdReplaceAll
  87. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-18 20:48 | 显示全部楼层
周星骋 发表于 2014-9-18 18:53
纠正一下3楼。
第3步替换中,“查找内容”不要“加粗”,“替换为”也不要“非加粗”。因为“加粗”在楼主 ...

谢谢,确实水平很高,除了个别别括号的题(不是横线)没解决,全解决了,问一下,如答案加上括号,应当如何替换

TA的精华主题

TA的得分主题

发表于 2014-9-19 08:13 | 显示全部楼层
按照2楼操作,确实在高亮部分前批量添加了“√”。
但问题是这些高亮部分是手动逐个设置的吗?假如是的话,用设置高亮的操作直接改成“复制该项前面的选择序号粘贴到试题前就可以了。”两者所花的时间几乎是等长的呀?

TA的精华主题

TA的得分主题

发表于 2014-9-19 09:33 | 显示全部楼层
考试加油站 发表于 2014-9-18 20:48
谢谢,确实水平很高,除了个别别括号的题(不是横线)没解决,全解决了,问一下,如答案加上括号,应当如 ...

再纠正一下我5楼录制的宏,将第2次替换多录了一次,而且多录的那次代码有误:没有勾通配符、多了一行窗口还原。
现完整的纠正如下:
  1. Sub 单选题填现成答案()
  2. ' 周星骋 编制

  3. '第1次替换
  4. Selection.Find.ClearFormatting '清除查找格式
  5. Selection.Find.Highlight = True '查找:突出显示
  6. Selection.Find.Replacement.ClearFormatting '清除替换格式
  7. With Selection.Find
  8. .Text = ""
  9. .Replacement.Text = "√^&" '替换为“√^&”
  10. .Forward = True
  11. .Wrap = wdFindContinue '搜索全部
  12. .Format = True
  13. .MatchCase = False '区分大小写:否
  14. .MatchWholeWord = False '全字匹配:否
  15. .MatchByte = False '区分全/半角:否
  16. .MatchWildcards = False '使用通配符:否
  17. .MatchSoundsLike = False '同音(英文):否
  18. .MatchAllWordForms = False '查找单词的所有形式(英文):否
  19. End With
  20. Selection.Find.Execute Replace:=wdReplaceAll '全部替换

  21. '第2次替换
  22. Selection.Find.ClearFormatting '清除查找格式
  23. Selection.Find.Replacement.ClearFormatting '清除替换格式
  24. With Selection.Find
  25. .Text = "(__)(*)√([A-Z]{1})" '查找内容“(__)(*)√([A-Z]{1})”
  26. .Replacement.Text = "\1\3\2\3" '替换为“\1\3\2\3”
  27. .Forward = True
  28. .Wrap = wdFindContinue '搜索全部
  29. .Format = False
  30. .MatchCase = False '区分大小写:否
  31. .MatchWholeWord = False '全字匹配:否
  32. .MatchByte = False '区分全/半角:否
  33. .MatchAllWordForms = False '查找单词的所有形式(英文):否
  34. .MatchSoundsLike = False '同音(英文):否
  35. .MatchWildcards = True '使用通配符:是
  36. End With
  37. Selection.Find.Execute Replace:=wdReplaceAll '全部替换

  38. '第3次替换
  39. Selection.Find.ClearFormatting '清除查找格式
  40. Selection.Find.Highlight = True '查找:突出显示
  41. Selection.Find.Replacement.ClearFormatting '清除替换格式
  42. Selection.Find.Replacement.Highlight = False '替换:非突出显示
  43. With Selection.Find
  44. .Text = ""
  45. .Replacement.Text = ""
  46. .Forward = True
  47. .Wrap = wdFindContinue
  48. .Format = True
  49. .MatchCase = False '区分大小写:否
  50. .MatchWholeWord = False '全字匹配:否
  51. .MatchByte = False '区分全/半角:否
  52. .MatchWildcards = False '使用通配符:否
  53. .MatchSoundsLike = False '同音(英文):否
  54. .MatchAllWordForms = False '查找单词的所有形式(英文):否
  55. End With
  56. Selection.Find.Execute Replace:=wdReplaceAll '全部替换

  57. '第4次替换
  58. Selection.Find.ClearFormatting '清除查找格式
  59. Selection.Find.Replacement.ClearFormatting '清除替换格式
  60. Selection.Find.Replacement.Font.Underline = wdUnderlineSingle '替换为→特殊格式→字体→单下划线
  61. With Selection.Find
  62. .Text = "(__)([A-Z]{1})" '查找内容“(__)([A-Z]{1})”
  63. .Replacement.Text = "\1\2" '替换为“\1\2”
  64. .Forward = True
  65. .Wrap = wdFindContinue
  66. .Format = True
  67. .MatchCase = False '区分大小写:否
  68. .MatchWholeWord = False '全字匹配:否
  69. .MatchByte = False '区分全/半角:
  70. .MatchAllWordForms = False '查找单词的所有形式(英文):否
  71. .MatchSoundsLike = False '同音(英文):否
  72. .MatchWildcards = True '使用通配符:是
  73. End With
  74. Selection.Find.Execute Replace:=wdReplaceAll '全部替换

  75. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2014-9-19 09:39 | 显示全部楼层
eh蝴蝶效应 发表于 2014-9-19 08:13
按照2楼操作,确实在高亮部分前批量添加了“√”。
但问题是这些高亮部分是手动逐个设置的吗?假如是的话, ...

思路挺好,我起初也是那么想的。
但关键是“查找内容”要么只能都“突出显示”、要么只能都“非突出显示”。
我无法一步查找到:突出显示的下划线  到  非突出显示的ABCD。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-19 10:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
周星骋 发表于 2014-9-19 09:39
思路挺好,我起初也是那么想的。
但关键是“查找内容”要么只能都“突出显示”、要么只能都“非突出显示 ...

想将横线上填写的代码加上括号可以吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-17 00:28 , Processed in 0.028252 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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