Vba 如何使用宏编辑excel中的日期列,使其成为通用格式;年月日;
这个问题与日期和时间有关。我试图在excel中创建一个宏来编辑日期列,以将以前输入的所有日期更改为通用格式“dd/mm/yyyy”。但是,如果使用“.”或“-”分隔日期,则不会将其标识为日期。尝试将分隔符替换为“/”,然后从右向左考虑日期。 我尝试的宏如下所示:Vba 如何使用宏编辑excel中的日期列,使其成为通用格式;年月日;,vba,excel,date,macros,Vba,Excel,Date,Macros,这个问题与日期和时间有关。我试图在excel中创建一个宏来编辑日期列,以将以前输入的所有日期更改为通用格式“dd/mm/yyyy”。但是,如果使用“.”或“-”分隔日期,则不会将其标识为日期。尝试将分隔符替换为“/”,然后从右向左考虑日期。 我尝试的宏如下所示: Sub Date_Edit() Columns("C:C").Select Selection.Insert Shift:=xlToRight Sheets(1).Range("B1:B1000").Replace ".", "/"
Sub Date_Edit()
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Sheets(1).Range("B1:B1000").Replace ".", "/"
For i = 2 To 1000
d = Cells(i, 2).Value
a = CDate(d)
Cells(i, 3) = FormatDateTime(d, 2)
Next i
Columns("C:C").Select
Selection.NumberFormat = "dd/mm/yyyy"
End Sub
我认为问题在于:
d = Cells(i, 2).Value ' here you set d as the variable
a = CDate(d) ' at this point a is the current variable
Cells(i, 3) = FormatDateTime(d, 2) ' and here you use d again.
我认为您需要在FormatDateTime中将d
替换为a
CDate()将值转换为日期。FormateDateTime()需要一个日期值才能运行
d
不是日期值。问题在于标准格式是“mm/dd/yyyy”
而不是“dd/mm/yyyy”
。当您尝试将“dd/mm/yyyy”
转换为标准日期值时,您必须交换日期和月份
此函数将仅处理日期值
Function FixDDMMYYYY(DateString As String) As Date
Dim arDateParts() As String
If InStr(DateString, ".") Then
arDateParts = Split(DateString, ".")
ElseIf InStr(DateString, "-") Then
arDateParts = Split(DateString, "-")
End If
On Error Resume Next
FixDDMMYYYY = DateSerial(arDateParts(2), arDateParts(1), arDateParts(0))
On Error GoTo 0
End Function
建议不要使用
Select
,因为它会减慢子例程的速度。不要使用列(“C:C”)。选择和Selection.NumberFormat=“dd/mm/yyyy”
您可以只使用:列(“C:C”)。NumberFormat=“dd/mm/yyyy”
类似地,您可以只使用列(“C:C”)。在代码的第一行插入Shift:=xlToRight
。