我当前正在使用Excel 2010,并且我有一列包含这种格式的日期(dd.mm.yyyy)。我想将点更改为斜杠(/)。我尝试使用rng.Cells(1, 6) = WorksheetFunction.Substitute(rng.Cells(1, 6), ". ", "/")
但是,当我这样做时,得到的结果与原始日期有所不同。例如,02.11.2011将变为11/02/2011。
包含(dd.mm.yyyy)的列为date
格式
我可以知道为什么吗,或者还有另一种方法吗?
答案 0 :(得分:0)
该列是否设置为日期格式?如果是这样,您可以尝试
rng.Cells(1, 6) = Format(CDate(rng.Cells(1, 6)), "dd/MM/yyyy")
答案 1 :(得分:0)
如果它是实际日期值,则使用NumberFormat
Range("B1").NumberFormat = "d/m/yyyy"
Range("B2").NumberFormat = "m/d/yyyy"
Range("B3").NumberFormat = "m-d-yyyy"
答案 2 :(得分:0)
我正在使用
splR = Split(oRange.Value, ".")
If UBound(splR) = 2 Then oRange.Value = Format(DateSerial(splR(2), splR(1), splR(0)), RegionalDateFormat) Else oRange.Value = oRange.Value
Function RegionalDateFormat(Optional outS As String)
Dim DateOrder As String
Dim DateSeparator As String
With Application
DateSeparator = .International(xlDateSeparator)
Select Case .International(xlDateOrder)
Case Is = 0
DateOrder = "mm" & DateSeparator & "dd" & DateSeparator & "yyyy"
Case Is = 1
DateOrder = "dd" & DateSeparator & "mm" & DateSeparator & "yyyy"
Case Is = 2
DateOrder = "yyyy" & DateSeparator & "mm" & DateSeparator & "dd"
Case Else
DateOrder = "Error"
End Select
End With
If outS = "Sep" Then outputS = DateSeparator Else outputS = DateOrder
RegionalDateFormat = outputS
End Function
答案 3 :(得分:0)
让我们澄清一下,Excel电子表格本身没有“日期”数据类型。 Excel处理日期的方法是存储一个整数,您可以选择将其格式化为日期。因此,例如,43467是代表2019年1月2日的整数。(小数部分代表当天的时间,所以43467.333 ..代表2019年1月2日8:00。)
尝试输入日期,然后右键单击>“设置单元格格式”以将该单元格设置为数字格式,以观察我在说什么。
以相同的方式,可以使Excel使用相同的方法以所需的日期格式呈现该单元格:选择单元格>右键单击>“设置单元格格式”,选择“自定义”,然后输入自定义格式,例如dd.mm.yyyy。
一旦您看到它可行,那么剩下的任务就是从VBA中执行相同的操作,就像这样:
Range(“ B1”)。NumberFormat =“ dd.mm.yyyy”
...正如其他人所指出的。
现在,如果您最初尝试使Excel将日期单元格格式化为数字失败(它保持其日期显示),那么您在单元格中看到的日期实际上将存储为字符串,并且不能用作日期(例如执行日期算术)。因此,您需要决定如何进行操作-也许将这些字符串转换为“日期”(即:数字格式为日期)。