Excel VBA将日期文本更改为日期格式
我有一个导出的excel,其日期格式为Excel VBA将日期文本更改为日期格式,excel,vba,Excel,Vba,我有一个导出的excel,其日期格式为2019年12月24日,如何使用VBA并设置宏,以便当我单击宏时,它变成2019-12-24。我试图在stackoverflow中找到相关的帖子,但没有找到。这两种格式都是通用文本格式,我希望保持这种格式。尝试以下方法: DateText = "24.12.2019" DateArr = Split(DateText, ".") MsgBox DateArr(2) & "-" & DateArr(1) & "-" & Date
2019年12月24日
,如何使用VBA并设置宏,以便当我单击宏时,它变成2019-12-24
。我试图在stackoverflow中找到相关的帖子,但没有找到。这两种格式都是通用文本格式,我希望保持这种格式。尝试以下方法:
DateText = "24.12.2019"
DateArr = Split(DateText, ".")
MsgBox DateArr(2) & "-" & DateArr(1) & "-" & DateArr(0)
如果希望输出为日期值:
DateValue(DateArr(2) & "-" & DateArr(1) & "-" & DateArr(0))
由于您希望将所有内容保持为文本,请查看以下代码,并尝试将其调整到您的工作表中
Sub Tester()
Dim rg As Range
Set rg = Range("A1:A4")
Dim sngCell As Range
For Each sngCell In rg
' This will set the format of the cell to text
sngCell.NumberFormat = "@"
' This will change the format of the date
' Be careful there is a lot of internal casting going on
sngCell.Value = Format(sngCell.Value, "YYYY-MM-DD")
Next
End Sub
你可以用这个函数得到文本的结果
Function dtTxt(inpdte As String) As String
dtTxt = Format(inpdte, "YYYY-MM-DD")
End Function
请尝试以下操作:
Sub Test()
Dim lr As Long
Dim rng As Range
With Sheet1 'Change according to your sheet's codename
lr = .Cells(.Rows.Count, "A").End(xlUp).Row 'Change "A" to whichever column data is in
Set rng = .Range("A1:A" & lr) 'Change accordingly again
rng.TextToColumns Destination:=rng, DataType:=xlFixedWidth, FieldInfo:=Array(0, xlDMYFormat)
rng.NumberFormat = "YYYY-MM-DD"
End With
End Sub
您的日期总是采用“dd.mm.yyyy”格式,还是采用“dd.m.yyyy”格式?@JvdV在我导出信息时,日期总是采用“dd.mm.yyyy”格式,因此我希望有一个解决方案,使格式为“yyyy-mm-dd”以使我的生活更轻松。而且您肯定希望保留文本格式?我想不必采用文本格式,日期格式也可以。啊,好的,对不起,我没有读上面的评论。奇怪的是,他为什么要把它写成文本。那么我最好换个帖子。“没有选择数据来解析”rng.TextToColumns…行上的错误“@JiaHaoWang,你必须明确哪个
表
,哪个列
,哪个范围
,正如我在帖子中解释的那样。代码对我有效。是的,JvDV的代码对我也有效。如前所述,您可以将日期作为输出。您能否告诉我“rng.TextToColumns…”行的作用是什么?我有点困惑。如果你使用循环,一定要在内存(数组)中存储值,一次性格式化rg
。否则,这应该有效=)是的,对,但可能对OP来说太多了,否则是个好主意explanation@JiaHaoWang,您应该通过选择答案来结束您的问题,并对其进行标记(单击您认为合适的答案右侧的复选标记)