VBA Exceldateyyyy / mmm / dd至yyyy / mm / dd

我正在写小VBA来pipe理和转换外部表的date,我被困在一些奇怪的date格式,如:yyyy / mm / dd我真正需要的是从a1转换date,并将其粘贴到b2

作为一个模板,我将使用列A1​​和B1:A1 =date被转换B1 =粘贴Destinaton的转换dat

  • A1
  • 2012.Jan.04
  • 2012.Nov.04
  • 2012.Dct.04

    • B1
    • 04.01.2012
    • 2012年4月11日
    • 2012年12月4日

我现在testing的是:

  1. 公式转换(与创build的字典) – 不能用于许多date的情况下转换
  2. date转换VBA – 无法看到我的date从A1作为一个适当的date,什么都不做
  3. 格式化这个date在Excel的内置function“格式化” – 什么也不做
  4. 此外function“文本到列”进行了testing – 仍然无所作为

这看起来像我只是坚持一些非常简单的事情,但现在真的很难前进,所以这就是为什么我要求帮助。

感谢您的任何想法。

我会在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