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= 粘贴转换后数据的目标

我现在测试的是:

  1. 要转换的公式(使用创建的字典)- 不能使用它以防万一 许多要转换的日期
  2. VBA 用于日期转换 - 无法将我在 A1 中的日期视为正确的日期 什么都不做
  3. 在 excel 内置函数中格式化此日期 "formating" - 什么都不做
  4. 还测试了功能 "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