VBA Excel 日期 yyyy/mmm/dd 至 yyyy/mm/dd
VBA Excel date yyyy/mmm/dd to yyyy/mm/dd
我正在写小 VBA 来管理和转换来自外部表的一些日期,但我被困在一些奇怪的日期格式上,例如:yyyy/mm/dd
我真正需要的是将日期从 a1 转换并粘贴到 b2
作为模板,我将用于 A1 和 B1 列:
A1= 要转换的日期 B1= 粘贴转换后数据的目标
- a1
- 2012.Jan.04
- 2012.Nov.04
2012.Dct.04
- b1
- 2012 年 1 月 4 日
- 2012 年 11 月 4 日
- 2012 年 12 月 4 日
我现在测试的是:
- 要转换的公式(使用创建的字典)- 不能使用它以防万一
许多要转换的日期
- VBA 用于日期转换 - 无法将我在 A1 中的日期视为正确的日期
什么都不做
- 在 excel 内置函数中格式化此日期 "formating" - 什么都不做
- 还测试了功能 "text-to-column" - 仍然什么都不做
看起来我只是停留在一些非常简单的事情上,但现在真的很难前进,所以这就是我寻求帮助的原因。
感谢任何想法。
我会在 B1
中使用以下公式:
=DATE(LEFT(A1,4),MATCH(MID(A1,6,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dct"},0),RIGHT(A1,2))
12 月的缩写 "Dct" 看起来很奇怪。因此,也许您必须根据您的语言更改数组 Literal {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dct"}
。
使用 VBA
以下 Function
可以使用:
Function convert_YYYY_MMM_DD_Text2Date(sText As String) As Variant
Dim iYear As Integer
Dim iMonth As Integer
Dim sMonth As String
Dim iDay As Integer
Dim aMonths As Variant
Dim bFound As Boolean
aMonths = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dct")
On Error GoTo errHandler
iYear = CInt(Left(sText, 4))
sMonth = Mid(sText, 6, 3)
iDay = CInt(Right(sText, 2))
For iMonth = 0 To UBound(aMonths)
If aMonths(iMonth) = sMonth Then
bFound = True
Exit For
End If
Next
If bFound Then
convert_YYYY_MMM_DD_Text2Date = DateSerial(iYear, iMonth + 1, iDay)
Else
GoTo errHandler
End If
On Error GoTo 0
Exit Function
errHandler:
convert_YYYY_MMM_DD_Text2Date = "conversion not possible"
End Function
我正在写小 VBA 来管理和转换来自外部表的一些日期,但我被困在一些奇怪的日期格式上,例如:yyyy/mm/dd 我真正需要的是将日期从 a1 转换并粘贴到 b2
作为模板,我将用于 A1 和 B1 列: A1= 要转换的日期 B1= 粘贴转换后数据的目标
- a1
- 2012.Jan.04
- 2012.Nov.04
2012.Dct.04
- b1
- 2012 年 1 月 4 日
- 2012 年 11 月 4 日
- 2012 年 12 月 4 日
我现在测试的是:
- 要转换的公式(使用创建的字典)- 不能使用它以防万一 许多要转换的日期
- VBA 用于日期转换 - 无法将我在 A1 中的日期视为正确的日期 什么都不做
- 在 excel 内置函数中格式化此日期 "formating" - 什么都不做
- 还测试了功能 "text-to-column" - 仍然什么都不做
看起来我只是停留在一些非常简单的事情上,但现在真的很难前进,所以这就是我寻求帮助的原因。
感谢任何想法。
我会在 B1
中使用以下公式:
=DATE(LEFT(A1,4),MATCH(MID(A1,6,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dct"},0),RIGHT(A1,2))
12 月的缩写 "Dct" 看起来很奇怪。因此,也许您必须根据您的语言更改数组 Literal {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dct"}
。
使用 VBA
以下 Function
可以使用:
Function convert_YYYY_MMM_DD_Text2Date(sText As String) As Variant
Dim iYear As Integer
Dim iMonth As Integer
Dim sMonth As String
Dim iDay As Integer
Dim aMonths As Variant
Dim bFound As Boolean
aMonths = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dct")
On Error GoTo errHandler
iYear = CInt(Left(sText, 4))
sMonth = Mid(sText, 6, 3)
iDay = CInt(Right(sText, 2))
For iMonth = 0 To UBound(aMonths)
If aMonths(iMonth) = sMonth Then
bFound = True
Exit For
End If
Next
If bFound Then
convert_YYYY_MMM_DD_Text2Date = DateSerial(iYear, iMonth + 1, iDay)
Else
GoTo errHandler
End If
On Error GoTo 0
Exit Function
errHandler:
convert_YYYY_MMM_DD_Text2Date = "conversion not possible"
End Function