ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请问怎样计算WORD中的中文字数而不包括标点符号?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-5-31 12:47 | 显示全部楼层 |阅读模式
[em13]

TA的精华主题

TA的得分主题

发表于 2005-5-31 15:26 | 显示全部楼层
在文档的属性里面有这些方面的内容。它包括字数和字符数,其中的字数就是文字的个数。

TA的精华主题

TA的得分主题

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

经实际试验,二楼的说法不太准确.标点是计算在内,不信你可以用个最简单的文件试试

我的思路是,先利用这个包括标点的字数作为基数,再利用穷举法计算出各个标点出现的次数(总和),最后用基数减去这个总和,即可达到楼主的目标.

但具体程序还是等版主来完成吧,偶的水平太烂,而且很懒................

TA的精华主题

TA的得分主题

发表于 2005-5-31 17:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-5-31 18:07 | 显示全部楼层
与二楼的效果一样,不信试试

TA的精华主题

TA的得分主题

发表于 2005-5-31 18:55 | 显示全部楼层

不太准确的办法:

用查找法

不要替换掉,Word会在查找结果显示数目。

因为标点只有几种,常见是 ,。“”‘’;等,几下就可以了。

TA的精华主题

TA的得分主题

发表于 2005-5-31 19:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是不准确,还请斑竹赐教,我也想知道一下。

TA的精华主题

TA的得分主题

发表于 2005-5-31 20:45 | 显示全部楼层

此事正如步兵兄所言,必须使用VBA来解决。

但是,并非如此简单,这里,我们需要解决一些实际问题,比如英文字符,甚至从0~255之间(CHR())所有字符,均不可计算在其内;

去除中文标点,去除英文标点。

至于工具统计中或者文档属性,归根结底是字符总数(或可包括空格,或者不包括空格),因此,此题需要一定时间来解决。无论使用总数法还是排它法,程序运行都不是特别合理。(总数法,即去除所有非中文字符,或者统计所有标点符号和非中文字符,用总数减之;排它法,将所有符合要求的字符,一一累加)

争取明晨我将代码贴上。

TA的精华主题

TA的得分主题

发表于 2005-6-1 05:34 | 显示全部楼层

请运行以下代码:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-6-1 5:33:27 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub CharactersSortCounts() '文档字数分类统计代码,主要统计中文字符,中文标点总数,英文字符数,英文标点总数 '以及其它字符数 Dim ChineseInterPunction As String, EnglishInterPunction As String Dim aChar As Range, AscaChar As Long, aVar As Variable Dim CIPCount As Integer, ChineseCount As Integer, EIPCount As Integer Dim EnglishCount As Integer, BlankCount As Integer, Others As Integer Dim MyRange As Range, MyLable As String '如果未选定 If Selection.Type = wdSelectionIP Then '定义一个全文档RANGE对象 Set MyRange = ThisDocument.Content MyLable = "全文档" Else '定义一个选定区域的RANGE对象 Set MyRange = Selection.Range MyLable = "选定文本" End If '定义中文标点符,可继续扩充 ChineseInterPunction = "。,;:?!……—~〔〕《》‘’“”" '定义英文标点符,可继续扩充 EnglishInterPunction = ".,;:?!…-~()<>'""""" With MyRange For Each aChar In .Characters AscaChar = VBA.Asc(aChar) '如果含有中文标点则计数 If VBA.InStr(ChineseInterPunction, aChar) > 0 Then CIPCount = CIPCount + 1 '如果含有英文标点计数 ElseIf VBA.InStr(EnglishInterPunction, aChar) > 0 Then EIPCount = EIPCount + 1 '如果为半角空格则计数 ElseIf AscaChar = 32 Then BlankCount = BlankCount + 1 '如果为英文字符(包含CHR(13))则计数 ElseIf AscaChar >= 0 And AscaChar <= 255 Then EnglishCount = EnglishCount + 1 '如果为简体中文则计数 ElseIf AscaChar < -2050 And AscaChar > -20319 Then ChineseCount = ChineseCount + 1 Else '累计其它 Others = Others + 1 End If Next '显示统计结果 MsgBox MyLable & "字数统计:" & vbCrLf & "字符总数: " & .Characters.Count - _ .Paragraphs.Count & _ vbCrLf & "段落总数: " & .Paragraphs.Count & _ vbCrLf & "空格总数: " & BlankCount & vbCrLf & _ "英文标点总数: " & EIPCount & vbCrLf & _ "英文字符数(不含空格,英文标点): " & EnglishCount & _ vbCrLf & "中文标点总数: " & CIPCount & vbCrLf & _ "中文字符总数(不含中文标点): " & ChineseCount & _ vbCrLf & "其它字符数: " & Others, vbOKOnly + vbInformation, "Microsoft Word" End With End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-9 21:21 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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