ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 日期替换求便捷方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-16 11:36 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
加工区区间流转转入载货清单20130805加工区区间流转转入载货清单20130805加工区区间流转转入载货清单20130726加工区区间流转转入载货清单20130726加工区区间流转转入载货清单20130726加工区区间流转转入载货清单20130722加工区区间流转转入载货清单20130722
能不能在WORD中一次就替换为:
加工区区间流转转入载货清单2013年08月05日加工区区间流转转入载货清单2013年08月05日加工区区间流转转入载货清单2013年07月26日加工区区间流转转入载货清单2013年07月26日加工区区间流转转入载货清单2013年07月26日加工区区间流转转入载货清单2013年07月22日加工区区间流转转入载货清单2013年07月22日


该贴已经同步到 wshcw的微博

TA的精华主题

TA的得分主题

发表于 2014-9-16 15:53 | 显示全部楼层
鄙人不才,在这儿抛个砖,看能不能引出几块玉。

查找内容:
  1. ([0-9]{4,4})([0-9]{2,2})([0-9]{2,2})
复制代码


替换为:
  1. \1年\2月\3日
复制代码



勾上“使用通配符”,
点“全部替换”按钮。
替换8位数年月日.png

TA的精华主题

TA的得分主题

发表于 2014-9-16 16:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 周星骋 于 2014-9-16 16:23 编辑

刚又发现查找内容还可以更简单点,这样也行:
([0-9]{4})([0-9]{2})([0-9]{2})

还好楼主给出的年月日都是整齐的8位数,如果月、日有一至二位数,就不好处理了,例如:
201311
2013827
20131225
尤其是月难得处理。

另外,即使数位不整齐,只要中间带有间隔符号(圆点、减号、斜杠),也好处理。
例如:
1、中间有圆点的
2013.1.1
2013.08.25
2013.12.25

查找内容为:
([0-9]{4}).([0-9]{1,2}).([0-9]{1,2})

2、中间有减号的
2013-1-1
2013-8-25
2013-12-25

查找内容为:
([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})

3、中间有斜杠的
2013/1/1
2013/8/25
2013/12/1

查找内容为:
([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})

上述3个例子道理都是一样的,将间隔符号加入到各个表达式(一对半角括号及括起来的内容就是一个表达式)之间就行了。
“替换为”的内容不变,都是:第1个表达式后边跟个“年”、第2个表达式后边跟个“月”、第3个表达式后边跟个“日”,即:
\1年\2月\3日

谢谢楼主的问题,引发我的思考,以后我遇到同样问题,也就手到擒来了。

点评

不是很理解,请解释一下.  发表于 2014-9-16 16:33

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-9-16 17:25 | 显示全部楼层
黄老师:
能取得MVP荣誉的,这世上可没几个,而您就是其中之一。
您让我解释一下,就像一板砖拍到我脸上。

我也是刚学了一点点 Word 替换用的通配符,解释得不通顺或者有错误,敬请谅解。

使用通配状态下,
一对圆括号括起来的就是一个“表达式”
例如
([0-9]{4})([0-9]{2})([0-9]{2})
就是如下3个表达式:
([0-9]{4})
([0-9]{2})
([0-9]{2})
表达式按先后产生顺序号,这个顺序号在“替换为”里用到。

这里插一句,将“替换为”解释一下,
“替换为”用反斜杠引用第n个表达式,上述例子中:
\1 就是替换第1个表达式,即引用([0-9]{4})
\2 就是替换第2个表达式,即引用([0-9]{2})
……依此类推。

再回头说“查找内容”的表达式,

一对方括号括起来的表示“范围内的字符”,里边的减号“-”表示“至”,逗号“,”表示一个个的,这种表示方式您在VBA里经常用到,
例如
[0-9]就是0123456789
[0-9,A,B,C,D]就是0123456789ABCD
[0-9,a-f]就是0123456789abcdef

一对花括号括起来的表示“出现次数范围”,它对前面方括号起作用,它里边的逗号“,”是参数分隔符,逗号前后的表示起止数,
例如
{4}表示只查找连续4个
{1,4}表示查找1至4个
{1,2}表示查找1至2个

合起来举例说明:
([0-9]{4})([0-9]{2})([0-9]{2})
表示
查找0-9的4位数、紧跟着查找0-9的2位数、再紧跟着查找0-9的2位数
具体实例就是将20130825分成4、2、2位一次性查找,即找到“2013”“08”“25”,当然它们是不能分开的。

而查找实际字符,放在圆括号外就行了,例如:
([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})
表示
查找0至9的4位数、查找斜杠、查找0至9的1位和2位、查找斜杠、查找0至9的1位和2位,

这里的“替换为”仍是
\1年\2月\3日
\1年 即引用([0-9]{4})原文,后边跟个“年”
\2月 即引用([0-9]{1,2})原文,后边跟个“月”
\3日 即引用最后一个([0-9]{1,2})原文,后边跟个“日”
而查找内容里3对圆括号之间的斜杠“/”,
在“替换为”里相当于啥都没有,所以斜杠“/”就替换没了。

抱歉,我的文字功底有限,说的既不简练也不很清楚。

TA的精华主题

TA的得分主题

发表于 2014-9-16 18:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哇,超级版主的贴,我来回一个吧
用通配,可以解决,
如果如楼上兄弟说的格式不统一,可能需要分情况讨论,那就要用VBA了,

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-16 21:31 | 显示全部楼层
周星骋 发表于 2014-9-16 17:25
黄老师:
能取得MVP荣誉的,这世上可没几个,而您就是其中之一。
您让我解释一下,就像一板砖拍到我脸上。 ...

 因平时很少研究,所以WORD方面很菜.谢谢,这下清楚了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-17 09:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wshcw 于 2014-9-17 09:26 编辑
周星骋 发表于 2014-9-16 17:25
黄老师:
能取得MVP荣誉的,这世上可没几个,而您就是其中之一。
您让我解释一下,就像一板砖拍到我脸上。 ...


问题又来了,假如,我不想要日(即去掉7至8位数),想替换为:
加工区区间流转转入载货清单2013年08月加工区区间流转转入载货清单2013年08月加工区区间流转转入载货清单2013年07月加工区区间流转转入载货清单2013年07月加工区区间流转转入载货清单2013年07月加工区区间流转转入载货清单2013年07月加工区区间流转转入载货清单2013年07月

TA的精华主题

TA的得分主题

发表于 2014-9-17 09:31 | 显示全部楼层
本帖最后由 周星骋 于 2014-9-17 09:40 编辑
wshcw 发表于 2014-9-17 09:24
问题又来了,假如,我不想要日(即去掉7至8位数),想替换为:
加工区区间流转转入载货清单2013年08月 ...

查找内容可以保持不变,即:
  1. ([0-9]{4})([0-9]{2})([0-9]{2})
复制代码

也可以去掉第3个表达式的圆括号,即:
  1. ([0-9]{4})([0-9]{2})[0-9]{2}
复制代码

说明:不要“日期”,那么代表日期的第3组数字,“查找内容”是不是“表达式”就无所谓了,反正是要将它替换成空无一物。

重要的是,“替换为”变一下就可以了,即:

  1. \1年\2月
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-17 10:55 | 显示全部楼层
周星骋 发表于 2014-9-17 09:31
查找内容可以保持不变,即:

也可以去掉第3个表达式的圆括号,即:

再次感谢老周的辅导。
WORD替换内容确实很复杂,WORD的金子埋得太深了。

TA的精华主题

TA的得分主题

发表于 2014-9-17 11:29 | 显示全部楼层
wshcw 发表于 2014-9-17 10:55
再次感谢老周的辅导。
WORD替换内容确实很复杂,WORD的金子埋得太深了。

那到不至于,相比您研究那么高深的VBA,这雕虫小技何足挂齿。
只不过您平时对 WORD 的需求可能较少而已。

将来我可能在 Excel 或 VBA 方面求救于您,望不吝赐教。
当然我将会量力求救,应该不会太难缠。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 18:09 , Processed in 0.027073 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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