ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 分别统计文档中,符合条件各段落中的顿号数量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-20 08:24 | 显示全部楼层 |阅读模式
请各位老师帮忙,谢谢!

附件.rar

27.79 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2023-3-20 10:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 batmanbbs 于 2023-3-20 16:38 编辑

修正后见楼下

TA的精华主题

TA的得分主题

发表于 2023-3-20 10:15 | 显示全部楼层
  1. Sub 顿号计数()

  2.     Dim myPG As Paragraph, myRegEx As Object, myMatches As Object
  3.     Dim i, s
  4.     Set myRegEx = CreateObject("VBSCRIPT.REGEXP")

  5.     i = 0
  6.     For Each myPG In ActiveDocument.Paragraphs
  7.         i = i + 1
  8.         With myPG.Range
  9.             s = Trim(Left(.Text, Len(.Text) - 1))   ' 去掉段落符和前后空格
  10.             If Len(s) > 2 And Right(s, 1) = "。" And Not (Right(s, 2) Like "[))]。") Then
  11.                 With myRegEx
  12.                     .Pattern = "、"
  13.                     .IgnoreCase = False
  14.                     .MultiLine = False
  15.                     .Global = True
  16.                     Set myMatches = .Execute(myPG.Range.Text)
  17.                 End With
  18.                 If myMatches.Count > 0 Then
  19.                     Debug.Print "第 " & i & " 段有 " & myMatches.Count & " 个顿号"    ' 数量较多,酌情处理
  20.                 End If
  21.             End If
  22.         End With
  23.     Next myPG
  24.     Set myPG = Nothing

  25. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-21 06:05 | 显示全部楼层

Batmanbbs老师好!
感谢你的代码!
不知什么原因,代码在我这运行后,没什么反应?

TA的精华主题

TA的得分主题

发表于 2023-3-21 08:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
只分别统计段落结尾为句号的,段落中的顿号数量。

但:
段落结尾为冒号的除外(类似下面红色所示段落)。
****************************************************

既然特地说明了要求:仅统计段落结尾为句号的所在段落的顿号数量,何来的段落结尾为冒号的除外这一说?
看不懂。

TA的精华主题

TA的得分主题

发表于 2023-3-21 08:20 | 显示全部楼层
相见是缘8 发表于 2023-3-21 06:05
Batmanbbs老师好!
感谢你的代码!
不知什么原因,代码在我这运行后,没什么反应?

因为段落数量较多,我使用的 debug.print 调试语句显示结果,因此你需要在VBE的立即窗口中才能看到。如果要在前端显示,请将上面第21句的 "debug.print" 修改为 "msgbox" 即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-21 09:05 | 显示全部楼层
本帖最后由 相见是缘8 于 2023-3-21 09:16 编辑
batmanbbs 发表于 2023-3-21 08:20
因为段落数量较多,我使用的 debug.print 调试语句显示结果,因此你需要在VBE的立即窗口中才能看到。如果 ...
Batmanbbs老师好!
经你指教后,可以显示。这个每段顿号的统计结果,能不能不以这种形式出现,可不可以让它直接就放在该段落后面?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-21 09:05 | 显示全部楼层
gbgbxgb 发表于 2023-3-21 08:15
只分别统计段落结尾为句号的,段落中的顿号数量。

但:

Gbgbxgb 老师好!好久不见!
仅统计段落结尾为句号的所在段落的顿号数量,但:
1、段落中需有顿号,结尾为冒号的段落除外(也就是:这种段落中的顿号,不统计)。
2、段落中需有顿号,结尾需为句号的段落,如段落中有冒号的除外(也就是:这种段落中的顿号,也不统计)。

TA的精华主题

TA的得分主题

发表于 2023-3-21 09:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
相见是缘8 发表于 2023-3-21 09:05
Gbgbxgb 老师好!好久不见!
仅统计段落结尾为句号的所在段落的顿号数量,但:
1、段落中需有顿号,结 ...

2、段落中需有顿号,结尾需为句号的段落,如段落中有冒号的除外(也就是:这种段落中的顿号,也不统计)。
**********************
怎么需求条件增加了1条?即段落中(不仅段落尾)出现冒号的,则该段不统计。

我帮你整理下需求描述:
统计以句号结尾的各段落的顿号数量(请把各段的统计结果插入在该段落末尾,形如:【102】),但下列特征的段落不要统计:
1.虽以句号结尾,但句号前有中文右括号的段落,形如:)。
2.虽以句号结尾,但该段落含有中文冒号。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-21 09:49 | 显示全部楼层
gbgbxgb 发表于 2023-3-21 09:38
2、段落中需有顿号,结尾需为句号的段落,如段落中有冒号的除外(也就是:这种段落中的顿号,也不统计) ...

对!感谢老师!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 20:04 , Processed in 0.036491 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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