ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎样使用VBA将日期格式转换为YYYY-MM-DD

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-30 19:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lsc900707 发表于 2016-10-30 19:20
再看看,你还有没发现的东西吧?

Sub 转换格式()

Dim Arr1, Arr2, Arr3, i%, j%, t As Date
t = Timer
Arr1 = Range("C:C")
With Range("C:C")
    .Select
    .ClearContents
    Selection.NumberFormatLocal = "0_);[红色](0)"
    Selection.Font.Size = 9
    Selection = Arr1
End With

i = Cells(Rows.Count, "B").End(xlUp).Row
For j = 2 To i
    Cells(j, "B") = CDate(Cells(j, "B"))
Next

Arr2 = Range("B:B")
With Range("B:B")
    .Select
    .ClearContents
    Selection.NumberFormatLocal = "YYYY-MM-DD"
    Selection.Font.Size = 9
    Selection = Arr2
End With

i = Cells(Rows.Count, "A").End(xlUp).Row
For j = 2 To i
    Cells(j, "A") = CDate(Cells(j, "A"))
Next
Arr3 = Range("A:A")
With Range("A:A")
    .Select
    .ClearContents
    Selection.NumberFormatLocal = "YYYY-mm-dd"
    Selection.Font.Size = 9
    Selection = Arr3
End With


Application.ScreenUpdating = True

MsgBox "转换成功"



End Sub
真的只改了这里嘞。。。。

TA的精华主题

TA的得分主题

发表于 2016-10-30 19:34 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   With Worksheets("A")
  5.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  6.     arr = .Range("a2:b" & r)
  7.     ReDim brr(1 To UBound(arr), 1 To 2)
  8.     For i = 1 To UBound(arr)
  9.       For k = 1 To 2
  10.         brr(i, k) = Mid(arr(i, k), 7, 4) & "-" & Mid(arr(i, k), 4, 2) & "-" & Left(arr(i, k), 2)
  11.       Next
  12.     Next
  13.     .Range("g2").Resize(UBound(brr), 2) = brr
  14.   End With
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-10-30 19:35 | 显示全部楼层
没太明白楼主的意思,重新写了一段,看是否符合楼主要求。

export 转化用文件.rar

15.39 KB, 下载次数: 105

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-10-30 19:47 | 显示全部楼层
chxw68 发表于 2016-10-30 19:35
没太明白楼主的意思,重新写了一段,看是否符合楼主要求。

褚老师,他的A\B列杂糅两种不同的日期格式,想同时转化成YYYY-MM-DD,格式

TA的精华主题

TA的得分主题

发表于 2016-10-30 19:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lsc900707 发表于 2016-10-30 19:47
褚老师,他的A\B列杂糅两种不同的日期格式,想同时转化成YYYY-MM-DD,格式

那就不好办了,我没有仔细看。

TA的精华主题

TA的得分主题

发表于 2016-10-30 19:54 | 显示全部楼层
chxw68 发表于 2016-10-30 19:51
那就不好办了,我没有仔细看。

是啊,数据不规范,问题不好办。呵呵。

TA的精华主题

TA的得分主题

发表于 2017-10-11 17:24 | 显示全部楼层
楼主你好,我今天也遇到了相同的问题,目前已找到方法。
对于yyyymmdd型日期想转换成yyyy.mm.dd的,可以用left、mid、right 分别取数并添加".",转换成yyyy.mm.dd的文本格式,再用format语句转成日期类型。
举例:
for i = 2 to range("A2").end(xldown).row
   cells(i,"a") = left(cells(i,"a"),4) & "." & mid(cells(i,"a"),5,2) & "." & right(cells(i,"a"),2)
   cells(i,"a") = format(cells(i,"a"),"yyyy.mm.dd")
next i
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 02:35 , Processed in 0.041327 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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