ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yagoo586

[求助] 怎样用vba对时间+日期格式进行批量修改

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-7 11:24 | 显示全部楼层
yagoo586 发表于 2016-1-7 11:05
Sub DateTime() 'by 论坛Yaong_3,39660519
    Dim rng As Range
    Set rng = Range("a2", Cells(Rows ...

因为你A列本身就是时间格式的日期,不用VBA,直接设置A列格式就可以

TA的精华主题

TA的得分主题

发表于 2016-1-7 11:28 | 显示全部楼层
本帖最后由 Yaong_3 于 2016-1-7 11:29 编辑
  1. Sub DateTime()
  2. Dim rng As Range
  3. For Each rng In Selection
  4. rng = Format(rng, "yyyy-mm-dd hh:mm:ss")
  5. rng.NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"
  6. Next
  7. End Sub
复制代码

这回对了吗?

时间格式转换.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-7 11:33 | 显示全部楼层
39660519 发表于 2016-1-7 11:24
因为你A列本身就是时间格式的日期,不用VBA,直接设置A列格式就可以

直接在A列设置单元格格式好像改不了,我这边右键设置单元格格式,自定义格式,yyyy-mm-dd hh:mm:ss确实实现不了

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-7 11:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-1-7 11:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yagoo586 发表于 2016-1-7 11:33
直接在A列设置单元格格式好像改不了,我这边右键设置单元格格式,自定义格式,yyyy-mm-dd hh:mm:ss确实实 ...

啊。。。。可以用VBA来修改格式那手动修改格式也应该不是问题才对,要不就是你A列的内容是文本,要不就是.......我也不知道了,不上附件不好说

TA的精华主题

TA的得分主题

发表于 2016-1-7 11:43 | 显示全部楼层
yagoo586 发表于 2016-1-7 11:33
直接在A列设置单元格格式好像改不了,我这边右键设置单元格格式,自定义格式,yyyy-mm-dd hh:mm:ss确实实 ...

我看了你的附件了,A列内容是文本格式的日期,所以要先转换成时间格式的日期

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-8 16:24 | 显示全部楼层
本帖最后由 yagoo586 于 2016-1-8 16:32 编辑

后来我多次运行后发现1月,10月等变换后还是有错误,我把附件传上来,请您帮我看看。
日期转换过部分错误值正确值
01/01/2015 04:38:53
2015-01-01 04:38:53

02/01/2015 10:38:53
2015-02-01 10:38:53
2015-01-02 10:38:53
10/01/2015 16:38:53
2015-10-01 16:38:53
2015-01-10 10:38:53
21/01/2015 16:38:54
2015-01-21 16:38:54

01/09/2015 04:38:53
2015-01-09 04:38:53
2015-09-01 04:38:53
02/09/2015 10:38:53
2015-02-09 10:38:53
2015-09-20 10:38:53
10/09/2015 16:38:53
2015-10-09 16:38:53
2015-09-10 16:38:53
21/09/2015 16:38:54
2015-09-21 16:38:54

30/09/2015 16:38:55
2015-09-30 16:38:55

01/10/2015 04:38:53
2015-01-10 04:38:53
2015-10-01 04:38:53
02/10/2015 10:38:53
2015-02-10 10:38:53
2015-10-02 10:38:53
10/10/2015 16:38:53
2015-10-10 16:38:53

21/10/2015 16:38:54
2015-10-21 16:38:54

30/10/2015 16:38:54
2015-10-30 16:38:54

01/12/2015 04:38:53
2015-01-12 04:38:53
2015-12-01 04:38:53
02/12/2015 10:38:53
2015-02-12 10:38:53
2015-12-02 10:38:53
10/12/2015 16:38:53
2015-10-12 16:38:53
2015-12-10 04:38:53
21/12/2015 16:38:54
2015-12-21 16:38:54

30/12/2015 16:38:54
2015-12-30 16:38:54

日期修改(问题).rar

15.47 KB, 下载次数: 34

TA的精华主题

TA的得分主题

发表于 2016-1-8 16:32 | 显示全部楼层
yagoo586 发表于 2016-1-8 16:24
后来我多次运行后发现1月,10月等变换后还是有错误,我把附件传上来,请您帮我看看。

你原数据的格式是日/月/年是吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-8 16:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
39660519 发表于 2016-1-8 16:32
你原数据的格式是日/月/年是吗?

嗯,日/月/年  时间这个格式,后来画图发现图很乱,才发现数据处理不对

TA的精华主题

TA的得分主题

发表于 2016-1-8 16:57 | 显示全部楼层
本帖最后由 39660519 于 2016-1-8 17:16 编辑
yagoo586 发表于 2016-1-8 16:34
嗯,日/月/年  时间这个格式,后来画图发现图很乱,才发现数据处理不对


我的是03版,你自己把公式复制过去,系统默认的日期格式为月/日/年或年/月/日,所以公式把你<=12的日当月了
Sub 转换日期格式()
    ARR = Range("a2", Cells(Rows.Count, "a").End(xlUp))
    For A = 1 To UBound(ARR)
        NR = ARR(A, 1)
        YY = Mid(NR, 7, 4)
        MM = Mid(NR, 4, 2)
        DD = Mid(NR, 1, 2)
        H = Mid(NR, 11, 12)
        ARR(A, 1) = CDate(YY & "-" & MM & "-" & DD & H)
    Next A
    [A2].Resize(UBound(ARR), 1) = ARR
    Range("a2", Cells(Rows.Count, "a").End(xlUp)).NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"
End Sub

日期修改(问题)1.zip

12.36 KB, 下载次数: 38

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2025-12-25 06:10 , Processed in 0.025045 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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