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的是:
- 公式转换(与创build的字典) – 不能用于许多date的情况下转换
- date转换VBA – 无法看到我的date从A1作为一个适当的date,什么都不做
- 格式化这个date在Excel的内置function“格式化” – 什么也不做
- 此外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