ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 不重复保留word文档中的字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-14 20:45 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ttkxssry 于 2018-4-17 12:35 编辑

word文档中,有些字符是重复的,有些字符是不重复的。

目的:

word文档中,不重复的字符要保留下来,重复的字符只保留一个。


可以采取两种方式中任一种方式:
1、只在本word文档中处理。可以采取删除方式:
如果某字符在文档中重复出现N(>1)次,则删除N-1个该字符,只保留一个该字符,达到文档中没有重复字符的效果。
2、在新旧2个word文档之间处理:
把文档中的字符进行不重复提取,结果保存到另一个文档中。
“不重复提取字符”,这个意思是:见到字符就提取,但如果某字符已经提取过,就不要重复提取。
注意“不重复提取字符”和”提取不重复字符“有很大区别。
(”提取不重复字符“,这个意思是:我们提取的是不重复的字符,如果某字符重复出现在文档里,则不提取,一次都不提取)

举个例子,“兢兢业兢业”去重后变成“兢业”,我要的是这样的结果。

不论采取2种方式中的哪一种方式,总之概括成一句话:既要完全保留文档中的字符,又要不重复出现
例如★出现了很多次,那么经过处理后,文档中只有一个★。

(备注:共有2千万的字符,所以用excel无法处理,只能用word处理。)

如果能用VBA解决就更好了。

实际中遇到的问题,恳请帮助,本人对您的援手感激不尽!

万分感谢!

不重复提取文档中的字符.rar

23.44 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-4-14 20:55 | 显示全部楼层
什么叫“字符”?理解清楚了吗?“字符”的含义概念模糊吗?

TA的精华主题

TA的得分主题

发表于 2018-4-14 20:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请问:文档中的非打印字符?算不算字符?比如:回车符、空格、制表符等 算不算字符?

TA的精华主题

TA的得分主题

发表于 2018-4-14 23:04 | 显示全部楼层
楼主,如果“兢兢业业”去重后变成“兢业”,这样不行吧?所以,应该上个附件,说清楚。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-15 10:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ttkxssry 于 2018-4-15 10:36 编辑
duquancai 发表于 2018-4-14 20:58
请问:文档中的非打印字符?算不算字符?比如:回车符、空格、制表符等 算不算字符?

对不起,怪我没表述清楚。这里的字符,不包括:非打印字符,回车符、制表符等。

一般地,能打印出来的字符都算,例如:标点符号、序号、数字、货币符号、语言文字(例如拉丁字母、汉字、汉语注音字母、日文假名、希腊字母、俄文字母、英文等)............

区分大小写。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-15 10:56 | 显示全部楼层
本帖最后由 ttkxssry 于 2018-4-15 12:30 编辑
413191246se 发表于 2018-4-14 23:04
楼主,如果“兢兢业业”去重后变成“兢业”,这样不行吧?所以,应该上个附件,说清楚。

您好。

“兢兢业业”去重后变成“兢业”,我要的是这样的结果。


感谢您!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-15 10:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2018-4-14 20:58
请问:文档中的非打印字符?算不算字符?比如:回车符、空格、制表符等 算不算字符?

您好!

不包括非打印字符,只包括可打印字符。多谢多谢!

TA的精华主题

TA的得分主题

发表于 2018-4-15 11:02 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ttkxssry 发表于 2018-4-15 10:59
您好!

不包括非打印字符,只包括可打印字符。多谢多谢!

对不起,不想玩这个题目。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-15 11:09 | 显示全部楼层
duquancai 发表于 2018-4-15 11:02
对不起,不想玩这个题目。

那你屏蔽本贴吧,以免后面我回复本贴时,会不断打扰到你。

TA的精华主题

TA的得分主题

发表于 2018-4-15 14:06 | 显示全部楼层
楼主,如果文档较大,请耐心等待,不要动键盘、鼠标,请试用下面的宏:
  1. Sub test删除重复字符()
  2.     Dim i&, j&, k&, m&, n$, t As Table
  3.     For Each t In ActiveDocument.Tables
  4.         t.Rows.ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=True
  5.     Next
  6.     With ActiveDocument.Content.Find
  7.         .Execute "^13", , , 0, , , , , , "", 2
  8.         .Execute "^11", , , 0, , , , , , "", 2
  9.         .Execute "^w", , , 0, , , , , , "", 2
  10.     End With
  11.     With Selection
  12.         .WholeStory
  13.         .ClearFormatting
  14.         .HomeKey Unit:=wdStory
  15.         With .Find
  16.             .ClearFormatting
  17.             Do
  18.                 m = m + 1
  19.                 With .Parent
  20.                     .MoveRight 1, 1, 1
  21.                     If .Text = vbCr Then Exit Do
  22.                     .Font.Underline = wdUnderlineSingle
  23.                     n = .Text
  24.                     .MoveRight 1, 1
  25.                 End With
  26.                 .Execute n, , , 0, , , , , , "", 2
  27.             Loop
  28.         End With
  29.         .WholeStory
  30.         .ClearFormatting
  31.         .HomeKey Unit:=wdStory
  32.         Do
  33.             .MoveRight 1, 1
  34.             .TypeParagraph
  35.         Loop Until .Text = vbCr
  36.         .Delete 1, 1
  37.         .WholeStory
  38.         .Sort ExcludeHeader:=False, FieldNumber:="段落数", SortFieldType:= _
  39.             wdSortFieldSyllable, SortOrder:=wdSortOrderAscending, FieldNumber2:="", _
  40.             SortFieldType2:=wdSortFieldSyllable, SortOrder2:=wdSortOrderAscending, _
  41.             FieldNumber3:="", SortFieldType3:=wdSortFieldSyllable, SortOrder3:= _
  42.             wdSortOrderAscending, Separator:=wdSortSeparateByTabs, SortColumn:=False, _
  43.              CaseSensitive:=False, LanguageID:=wdSimplifiedChinese, SubFieldNumber:= _
  44.             "段落数", SubFieldNumber2:="段落数", SubFieldNumber3:="段落数"
  45.         .HomeKey Unit:=wdStory
  46.     End With
  47.     MsgBox "处理完毕!!!!!!!!!!!!", 0 + 48
  48. End Sub
复制代码

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2025-1-12 04:58 , Processed in 0.030901 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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