ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 提取填空题答案无果

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-30 14:43 | 显示全部楼层
duquancai 发表于 2020-3-29 17:17
提取的答案是要与题号 一一对应的,不是重新编序号而是要引用原题号。

若是有两级题号又该如何提取?
杜老师若有功夫,请移步40楼指教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-30 14:44 | 显示全部楼层
lss001 发表于 2020-3-29 16:00
Sub 题号提取精简版()
    For Each g In ActiveDocument.Paragraphs
        i = i + 1: j = 0: k = 1:  ...

若是有两级题号又该如何提取?
lss001大侠方便的话,请移步40楼赐教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-30 14:58 | 显示全部楼层
lss001 发表于 2020-3-29 16:00
Sub 题号提取精简版()
    For Each g In ActiveDocument.Paragraphs
        i = i + 1: j = 0: k = 1:  ...

发觉大侠的代码通用性比较强,可以提出两级题号,比如40楼,但是感觉还有瑕疵。
长江填空题集锦  
1.①青春期身体外形的变化  内部器官的变化  性机能的成熟  ②青春期充沛的精力  敏捷的思维  强烈渴望  ③青春期在美  内在美  2.遗传  营养  锻炼  3.①男生与生俱来  平静而欣然地接受  ②男生优势  完善自己  4.自强  相信自己  勇敢尝试  不断进步  5.①① 底线意识  触碰道德底线  违反法律  ②““虽不能至,心向往之”  向往美好  永不言弃  6. 战胜自己  超越自己  进取的精神  不懈的坚持  7.修身  “止于至善”  8.①人喜  怒  哀  乐  焦虑  ②我们多方面  ③.观念  行动  9.适度  持续  10.改变认知评价  转移注意  合理宣泄  放松训练  

5题有两个小题号①,显然是多出一个。

TA的精华主题

TA的得分主题

发表于 2020-3-30 18:19 | 显示全部楼层
本帖最后由 lss001 于 2020-3-30 20:55 编辑
weiyingde 发表于 2020-3-30 14:58
发觉大侠的代码通用性比较强,可以提出两级题号,比如40楼,但是感觉还有瑕疵。
长江填空题集锦  
1. ...

Sub 多级题号提取精简版()
    For Each g In ActiveDocument.Paragraphs
        i = i + 1: j = 0: k = 1: s = ""
        For Each h In g.Range.Words
            j = j + 1
            If i = 1 Then
                s = s & h.Text
            Else
                If j < 3 Then
                    If IsNumeric(Left(h.Text, 1)) Or r = 1 Then
                        If j = 1 Then r = 1 Else r = 0
                        s = s & h.Text
                    Else
                        If j < 2 Then s = s & h.Text
                    End If

                Else
                    If h.Font.Underline = 11 Then
                        s = s & h: k = 0
                    Else
                        k = k + 1: If k = 1 Then s = s & "  "
                    End If
                End If
            End If
        Next
        t = t & s
    Next
    Documents.Add.Content.Text = t
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-30 18:49 | 显示全部楼层
lss001 发表于 2020-3-30 18:19
Sub 多级题号提取精简版()
    For Each g In ActiveDocument.Paragraphs
        i = i + 1: j = 0: k ...

品读你的代码,是通过循环段落,再取出每个段落的第一个词(数字),然后查找波浪线的内容,他们组接在一起。对这类题型又用。所以最简单,这样说来,比较巧妙,省略了一些查找的步骤。只是判断多一些,逻辑稍复杂。比较好理解。
谢谢你。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-30 19:03 | 显示全部楼层
lss001 发表于 2020-3-30 18:19
Sub 多级题号提取精简版()
    For Each g In ActiveDocument.Paragraphs
        i = i + 1: j = 0: k ...

经测试,解决5题小号重复问题,美中不足的是,还有瑕疵,请看:
1.①青春期身体外形的变化  内部器官的变化  性机能的成熟  ②青春期充沛的精力  敏捷的思维  强烈渴望  ③青春期在美  内在美  2.遗传  营养  锻炼  3.①男生与生俱来  平静而欣然地接受  ②男生优势  完善自己  4.自强  相信自己  勇敢尝试  不断进步  5.①底线意识  触碰道德底线  违反法律  ②““虽不能至,心向往之”  向往美好  永不言弃  6战胜自己  超越自己  进取的精神  不懈的坚持  7.修身  “止于至善”  8.①人喜  怒  哀  乐  焦虑  ②我们多方面  ③.观念  行动  9.适度  持续  10.改变认知评价  转移注意  合理宣泄  放松训练
红色部分,引号重复。

TA的精华主题

TA的得分主题

发表于 2020-3-30 20:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
weiyingde 发表于 2020-3-30 19:03
经测试,解决5题小号重复问题,美中不足的是,还有瑕疵,请看:
1.①青春期身体外形的变化  内部器官的 ...

参考楼上。。。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2020-3-30 22:55 | 显示全部楼层
weiyingde 发表于 2020-3-30 14:41
非常好用,大侠技术精熟,思路多,方法多样,学习了。
但是如果有答下题目又该怎样提取呢?
见附件。

要这种效果吗?
  1. Sub test3()
  2.     Dim otext As String
  3.     Dim info As String
  4.     Dim regEx As Object
  5.     Dim aMatch As Object
  6.    
  7.     Application.ScreenUpdating = False
  8.     With ActiveDocument.Content.Find '用特殊字符对下划线内容进行临时标记
  9.         .Font.Underline = wdUnderlineWavy
  10.         .Execute replacewith:="##^&##", Replace:=wdReplaceAll
  11.     End With
  12.    
  13.     Set regEx = CreateObject("VBScript.Regexp")
  14.     With regEx
  15.         .Global = True
  16.         .MultiLine = True
  17.         .Pattern = "^(\d+)([..][^\r]*?##)"
  18.         otext = .Replace(ActiveDocument.Content.Text, "##$1.##$2")
  19.         ActiveDocument.Undo
  20.         .Pattern = "^([①-⑩])([^\r]*?##)"
  21.         otext = .Replace(otext, "##$1##$2")
  22.         .Pattern = "^(\d+)([..][^\r]+\r##[①-⑩])"
  23.         otext = .Replace(otext, "##$1.##$2")
  24.         .Pattern = "##(.+?)##"
  25.         For Each aMatch In .Execute(otext)
  26.             info = info & aMatch.Submatches(0) & Space(2)
  27.         Next
  28.         .Pattern = "(\d+\.|[①-⑩])  "
  29.         info = .Replace(info, "$1")
  30.     End With
  31.    
  32.     Documents.Add.Content.Text = Trim(info)
  33.     Application.ScreenUpdating = True
  34. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-31 06:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 weiyingde 于 2020-3-31 06:30 编辑

先谢谢,再测试,感觉精妙,应该能技到难纾。好好地学习一下。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 12:12 , Processed in 0.037430 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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