楼主 い卋玑┾宝珼 |
要求:仅用Word,在word中实现将错误的日期格式批量转换为中文日期。 这是EH一个精华帖的内容,尊重原作者,把链接帖上 http://club.excelhome.net/thread-485899-1-1.html 是小月在09年出的一道题目,闲来无事,就思考一下,如果仅用Word能否实现这一点。当然,仅用Word会很麻烦,这并不是最优解,但是,可以很好在认识到Word的强大,开拓思路。 源文档: 第一步:为了让文章可以还原回去,先将换行符替换成文章中没有出现的任意字符。 此处,勾选通配符匹配,将^p替换成$ 第二步,勾选使用通配符,将([0-9]{4})?([0-9]{1,})?([0-9]{1,})替换为^t\1-\2-\3^t^p 这里,既为了文本转表格的格式,为了了将日期统一格式 ()是分段,一个()就表示一段,具体,可以自行搜索查找和替换的具体用法。()里是匹配数字,?是匹配一个字符,这样所有的日期都匹配上了。 第三步:将月变成两位(为了朝最终将日期变成8位数字前进) 勾选使用通配符,将\-([0-9]\-)替换为0\1 第四步:把日替换成两位数字,勾选使用通配符,将\-([0-9]^t)替换为0\1 第五步,将多余的“-”替换掉,这里可能有人问,我原本就有“-”不是也没了么,那就选择一个,文章里没有出现的分隔符进行替换即可。直接把前面提到的“-”全部换成文章中没有的那个分隔符就好了。 第六步,全选文本,进行文本转表格 记住,这里一定要选择制表符。 此时变成这样的效果: 第七步,插入域,转化为中文日期,里面的内容是{if { =sum(left) } = 0 "" { quote { =SUM(LEFT) \# "0000'-'00'-'00" } \@ "EEEE年O月A日" } },记住大括号是用Ctrl+F9插入的哦。 插入上面的域,来解释一下,用sum(left),可以获取左边的数字,用\#可以设置数字显示的格式,设置成用“-”连接之后,系统就会认为是日期,这时候,用quote域,将其格式设置为大写的日期。外面的if,则是因为左边的列有些是空的,所以当空的时候,应该显示为空。 第八步,将这一单元格的内容复制,然后粘贴到整个列。效果如图。 按Alt+F9,切换显示状态,全选,按F9刷新。效果如下图。 第九步,全选,按ctrl+shift+F9,将域切换成静态文本 第十步,将第二列删除。 第十一步,将表格转换成文本 第十二步,将所有的段落标记替换掉,不勾选匹配通配符,^p替换为空 第十三步,将之前保存的段落标记替换回去,还原格式,不勾选匹配通配符,将$替换为^p 最后的成果。 原文档中还有首行缩进,设置一下就好了。 完工,Word是不是很强大。 再次感谢天宇。 不要纠结这样太麻烦,因为这只是一种完成任务的思路。 附件: 乱七八糟的文字.zip 此系列为三帖,为进阶型: Word表格转置 仅用word的功能,实现表格的转置 批量添加等级 仅用Word的功能,实现分数等级评定的批量添加 批量替换日期 仅用word的功能,将文章中的日期实现批量的替换 |
2楼 李欣Nina |
多多要死了 |
3楼 心痛神伤 |
学习 |
4楼 峦青 |
学习了,不会的有点多,努力。 |
5楼 liuxy881102 |
天啦。。怎么word 比excel复杂这么多 |