ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 时间格式改成月/日/年

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-6-24 09:44 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
两列数据显示的是日/月/年格式。 我打算把这个改成月/日/年格式。
但是遇到问题了,这些日期实际上属性都不统一,有的是日期格式,有的是通用的格式,基本格式都乱了。
我无法统一成一种格式。也无法使用公式来改。
大家有没有一个好的方法?

Book1.zip

143.93 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2016-6-24 10:01 | 显示全部楼层
本帖最后由 zax010 于 2016-6-24 10:04 编辑

[a1].CurrentRegion.NumberFormatLocal = "m/d/yyyy"

TA的精华主题

TA的得分主题

发表于 2016-6-24 10:03 | 显示全部楼层
  1. Sub tst()
  2.     On Error Resume Next
  3.     With ActiveSheet
  4.         For i = 2 To [a1].CurrentRegion.Row
  5.             .Cells(i, 1).Value = CDate(Cells(i, 1).Value)
  6.             .Cells(i, 2).Value = CDate(Cells(i, 2).Value)
  7.         Next
  8.         .Columns("A:B").NumberFormatLocal = "mm/dd/yyyy;@"
  9.     End With
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-6-24 10:12 | 显示全部楼层
  1. =TEXT(VALUE(IF(ISNUMBER(A2),A2,RIGHT(A2,4)&"/"&MID(A2,4,2)&"/"&LEFT(A2,2))),"yyyy/mm/dd")
复制代码

TA的精华主题

TA的得分主题

发表于 2016-6-24 10:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-6-24 10:26 | 显示全部楼层
公式可以解决,当然VBA也可以解决。公式如下:
=TEXT(IFERROR(VALUE(A2),DATE(RIGHT(A2,4),MID(A2,FIND("/",A2)+1,2),LEFT(A2,FIND("/",A2)-1))),"m/d/yyyy")

如果是VBA,逻辑差不多吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-6-24 10:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zoujialing 发表于 2016-6-24 10:26
公式可以解决,当然VBA也可以解决。公式如下:
=TEXT(IFERROR(VALUE(A2),DATE(RIGHT(A2,4),MID(A2,FIND("/ ...

可能我表述的不清楚,我的意思是把所有的日期都改成月/日/年。

比如说第一条, 5/1/2016 其实是 1月5日2016年。 所以我需要让它显示成 1/5/2016
比如8/1/2016 其实是1月8日2016年, 我需要改成1/8/2016.

你的方法能帮我解决一些,但所有的解决不了。 28/04/2016 解决对了,但是5/1/2016 没有改成1/5/2016

TA的精华主题

TA的得分主题

发表于 2016-6-24 11:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
piaowenxiu 发表于 2016-6-24 10:40
可能我表述的不清楚,我的意思是把所有的日期都改成月/日/年。

比如说第一条, 5/1/2016 其实是 1月5 ...

如果说你所有的日期都是统一的日/月/年格式,只是有些月的格式为两位数不能识别的话,也可以用我提供的思路解决啊。你可以自己先试试,方法就是根据两个“/”符号的位置,分割出不同的属性。最左边的是日,最右边的是年,中间的是月。分割后,用DATE(YEAR,MONTH,DAY)公式就可以得到DATE的value,你再用TEXT统一格式就可以了。

TA的精华主题

TA的得分主题

发表于 2016-6-24 11:32 | 显示全部楼层
piaowenxiu 发表于 2016-6-24 10:40
可能我表述的不清楚,我的意思是把所有的日期都改成月/日/年。

比如说第一条, 5/1/2016 其实是 1月5 ...

=TEXT(IFERROR(TEXT(VALUE(A2),"d/m/yyyy"),DATE(RIGHT(A2,4),MID(A2,FIND("/",A2)+1,2),LEFT(A2,FIND("/",A2)-1))),"m/d/yyyy")

没有多余0的日期实际上已经被系统认反了,你要强行掰过来,就把日期和月份对调下就可以了,用这个公式解决即可。

TA的精华主题

TA的得分主题

发表于 2016-6-24 11:45 | 显示全部楼层
piaowenxiu 发表于 2016-6-24 10:40
可能我表述的不清楚,我的意思是把所有的日期都改成月/日/年。

比如说第一条, 5/1/2016 其实是 1月5 ...

VBA 的话更简单些,应为日期也能读到“/”符号。
  1. Public Function myDate(ByVal Target As String) As Date
  2.     Dim arrDateNums() As String
  3.    
  4.     arrDateNums = Split(Target, "/")
  5.     myDate = CDate(arrDateNums(1) & "/" & arrDateNums(0) & "/" & arrDateNums(2))
  6.    
  7. End Function
复制代码


代码插入module中,可以在EXCEL中像公式一样引用: Capture.JPG

评分

1

查看全部评分

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 13:31 , Processed in 0.052695 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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