ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何提取答案

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-13 21:50 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 zzpsx 于 2021-5-14 06:53 编辑

如何提取答案-.rar (20.93 KB, 下载次数: 16) ps:黄色句子末尾的序号就是参考答案的序号
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-14 13:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我的土办法是把黄色部分复制到excel,然后用ctrl+e键分离后排序

image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-14 14:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
版主可否将此贴移到vba板块,谢谢。

TA的精华主题

TA的得分主题

发表于 2021-5-16 09:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
* 楼主,请勾选文字后,执行宏;第二次勾选文字后,按热键 F3 即可!
  1. Sub aaaa_zzpsx()
  2.     KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyF3), KeyCategory:=wdKeyCategoryMacro, Command:="aaaa_zzpsx"
  3.     Dim r As Range, i As Paragraph, c As Cell, n As Long
  4.     With Selection
  5.         If .Type = 1 Then MsgBox "No-Select!", 0 + 16: End
  6.         If .Text Like vbCr & "*" Then .MoveStart
  7.         If .Text Like "*" & vbCr & vbCr Then .MoveEnd 1, -1
  8.         Set r = .Range
  9.         .InsertAfter Text:=vbCr & .Text
  10.         For Each i In r.Paragraphs
  11.             If i.Range Like "*#?" Then i.Range.Characters.Last.Previous.Delete
  12.         Next
  13.         Do
  14.             .MoveStart 4
  15.         Loop Until .Text Like vbCr & "*"
  16.         .MoveStart 4
  17.         .ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=1, AutoFitBehavior:=wdAutoFitFixed
  18.         .InsertColumnsRight
  19.         For Each c In .Cells
  20.             n = n + 1
  21.             c.Range.Text = .Tables(1).Columns(1).Cells(n).Range.Characters.Last.Previous.Text
  22.         Next
  23.         .Sort ExcludeHeader:=False, FieldNumber:="列 2", SortFieldType:= _
  24.             wdSortFieldNumeric, SortOrder:=wdSortOrderAscending, FieldNumber2:="", _
  25.             SortFieldType2:=wdSortFieldSyllable, SortOrder2:=wdSortOrderAscending, _
  26.             FieldNumber3:="", SortFieldType3:=wdSortFieldSyllable, SortOrder3:= _
  27.             wdSortOrderAscending, Separator:=wdSortSeparateByCommas, SortColumn:= _
  28.             False, CaseSensitive:=False, LanguageID:=wdSimplifiedChinese, _
  29.             SubFieldNumber:="段落数", SubFieldNumber2:="段落数", SubFieldNumber3:="段落数"
  30.         .Tables(1).Columns(1).Select
  31.         .InsertColumns
  32.         n = 0
  33.         For Each c In .Cells
  34.             n = n + 1
  35.             c.Range.Text = .Tables(1).Columns(2).Cells(n).Range.Characters.First.Text
  36.         Next
  37.         .Tables(1).Columns(2).Delete
  38.         .Tables(1).Columns(2).Delete
  39.         .Rows.ConvertToText Separator:=wdSeparateByDefaultListSeparator, NestedTables:=True
  40.         .Text = Replace(.Text, vbCr, "")
  41.         .InsertBefore Text:="参考答案:"
  42.         .InsertAfter Text:=vbCr
  43.         .HomeKey 5
  44.     End With
  45. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-5-16 15:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 替换()
  2. Selection.StartOf unit:=wdStory
  3. arr = Array("A", "B", "C", "D", "E")
  4. Do
  5. With Selection.Find
  6.   .MatchWildcards = True
  7.   k = "参考答案:"
  8.   For i = 0 To 4
  9.     .Text = "(" & arr(i) & ".*)[1-9]"
  10.     If .Execute = False Then Exit Do
  11.       ss = Right(.Parent, 1) * 1
  12.       k = k & arr(ss - 1)
  13.       .Replacement.Text = "\1"
  14.       .Execute Replace:=wdReplaceOne
  15.       .Parent.Move
  16.   Next i
  17.   Selection.InsertBefore vbCrLf & k
  18. End With
  19. Loop
  20. End Sub
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-5-16 20:54 | 显示全部楼层
tcdatongye 老师的代码妙啊!又短!请 楼主 用他的代码吧,将宏设置热键来 F3(或 F8)后应用。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-17 09:28 | 显示全部楼层
413191246se 发表于 2021-5-16 20:54
tcdatongye 老师的代码妙啊!又短!请 楼主 用他的代码吧,将宏设置热键来 F3(或 F8)后应用。

谢谢两位高手,都是超级厉害的高手,感谢你们的热情帮助。

TA的精华主题

TA的得分主题

发表于 2021-5-18 15:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-18 20:17 | 显示全部楼层
这个文件提取的答案重复了.rar (23.37 KB, 下载次数: 14)
各位高手,之前代码运行提取的答案是正确的,不过这个文件好像不正确,提取的答案有重复的字母了,不知道为何?

TA的精华主题

TA的得分主题

发表于 2021-5-19 02:52 | 显示全部楼层
* 楼主,tcdatongye 老师的代码,看不懂!(数组+查找替换+循环),请试用我新编的宏:
  1. Sub aaaa_zzpsx_2()
  2. '请将光标放在 A.-E.段落中!不必勾选!
  3.     Dim r As Range, i As Paragraph, c As Cell, n As Long
  4.     With Selection
  5.         Do
  6.             .Expand 4
  7.             If .Text Like "A.*#?" Then GoTo sk
  8.             Do
  9.                 .MoveStart 4, -1
  10.             Loop Until .Text Like "A.*"
  11. sk:
  12.             If .Text Like "*E.*#?" Then GoTo si
  13.             Do
  14.                 .MoveEnd 4
  15.             Loop Until .Text Like "*E.*"
  16. si:
  17.             CommandBars.FindControl(ID:=122).Execute
  18.             CommandBars.FindControl(ID:=123).Execute
  19.             Set r = .Range
  20.             .InsertAfter Text:=vbCr & .Text
  21.             For Each i In r.Paragraphs
  22.                 If i.Range Like "*#?" Then i.Range.Characters.Last.Previous.Delete
  23.             Next
  24.             Do
  25.                 .MoveStart 4
  26.             Loop Until .Text Like vbCr & "*"
  27.             .MoveStart 4
  28.             .ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=1, AutoFitBehavior:=wdAutoFitFixed
  29.             .InsertColumnsRight
  30.             n = 0
  31.             For Each c In .Cells
  32.                 n = n + 1
  33.                 c.Range.Text = .Tables(1).Columns(1).Cells(n).Range.Characters.Last.Previous.Text
  34.             Next
  35.             .Sort ExcludeHeader:=False, FieldNumber:="列 2", SortFieldType:= _
  36.                 wdSortFieldNumeric, SortOrder:=wdSortOrderAscending, FieldNumber2:="", _
  37.                 SortFieldType2:=wdSortFieldSyllable, SortOrder2:=wdSortOrderAscending, _
  38.                 FieldNumber3:="", SortFieldType3:=wdSortFieldSyllable, SortOrder3:= _
  39.                 wdSortOrderAscending, Separator:=wdSortSeparateByCommas, SortColumn:= _
  40.                 False, CaseSensitive:=False, LanguageID:=wdSimplifiedChinese, _
  41.                 SubFieldNumber:="段落数", SubFieldNumber2:="段落数", SubFieldNumber3:="段落数"
  42.             .Tables(1).Columns(1).Select
  43.             .InsertColumns
  44.             n = 0
  45.             For Each c In .Cells
  46.                 n = n + 1
  47.                 c.Range.Text = .Tables(1).Columns(2).Cells(n).Range.Characters.First.Text
  48.             Next
  49.             .Tables(1).Columns(2).Delete
  50.             .Tables(1).Columns(2).Delete
  51.             .Rows.ConvertToText Separator:=wdSeparateByDefaultListSeparator, NestedTables:=True
  52.             .Text = Replace(.Text, vbCr, "")
  53.             .InsertBefore Text:="参考答案:"
  54.             .InsertAfter Text:=vbCr
  55.             .EndKey 5
  56.             Do
  57.                 .Move 4
  58.                 If .Paragraphs(1).Range.End = ActiveDocument.Content.End Then End
  59.             Loop Until .Paragraphs(1).Range Like "A.*#?"
  60.             If MsgBox("是否继续?", 4 + 16) = vbNo Then End
  61.         Loop
  62.     End With
  63. End Sub
复制代码

评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-8 02:01 , Processed in 0.044625 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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