Excel 公式转换日期格式

Excel 公式转换日期格式

假设我的单元格中有如下文本值:

02/23/15 to 03/01/15

我可以使用 Excel 函数将其转换为类似

23-Feb-15 to 1-Mar-15

到目前为止,我已经研究了公式,DATEVALUE但它似乎并不能解决我的具体问题。

我想我正在寻找的是:如何为字符串(例如“02/16/15”)指定日期格式(例如“dd/mm/yy”)并将其转换为另一种格式的日期字符串(例如“dd-mmm-yy”)

答案1

无论您的区域设置如何,以下公式都适用于您的示例:

=TEXT(DATE(MID(A1,7,2),LEFT(A1,2),MID(A1,4,2)),"dd-mmm-yy") & " to " & TEXT(DATE(RIGHT(A1,2),MID(A1,13,2),MID(A1,16,2)),"dd-mmm-yy")

只要日期的格式为 mm/dd/yy 并且位于开始和结束,那么无论日期之间是什么,这个方法都可以起作用:

=TEXT(DATE(MID(A1,7,2),LEFT(A1,2),MID(A1,4,2)),"dd-mmm-yy") & MID(A1,9,LEN(A1)-16) & TEXT(DATE(RIGHT(A1,2),MID(A1,LEN(A1)-7,2),MID(A1,LEN(A1)-4,2)),"dd-mmm-yy")

根据您的情况,这个其他选项可能会或可能不会有帮助。您可以更改系统的默认日期格式。这会影响 Excel 的日期函数,因此它们会期望日期采用该格式。完成后,您可以DATEVALUE正常使用该函数。如果这是一次性操作,我建议更改格式,运行公式,然后再改回来。否则,我会采用公式方法。您可以获取有关如何更改系统设置的所有详细信息这里。(我没有复制粘贴所有内容,因为它长的

答案2

你可以试试这个(我使用英国日期格式)

=CONCATENATE(TEXT(LEFT(A1,8), "dd-mmm-yy")," to ",TEXT(RIGHT(A1,8), "dd-mmm-yy"))

在此处输入图片描述

如您所见,它期望日期格式为固定长度(8 个字符,例如 mm/dd/yy 或 /dd/mm/yy)。


由于上述方法不起作用,您可以尝试 VBa,它将读取 ColA 中的当前值并将新值粘贴到 ColB 中

Option Explicit
Sub YikesThereBePirates()

Dim row As Integer
row = 1

Do While Range("A" & row).Value <> ""

    Dim splitty() As String
    splitty = Split(Range("A" & row).Value, " to ")
    
    Dim newFirstDate As String
    Dim newSecondDate As String
    
    newFirstDate = GetDate(splitty(0))
    newSecondDate = GetDate(splitty(1))
    
    Range("B" & row).Value = newFirstDate & " to " & newSecondDate
    
row = row + 1
Loop


End Sub

Function GetDate(d As String) As String

Dim splitty() As String
splitty = Split(d, "/")
Dim mnth As String

Select Case (splitty(0))
    Case "01"
    mnth = "Jan"
    Case "02"
    mnth = "Feb"
    Case "03"
    mnth = "Mar"
    Case "04"
    mnth = "Apr"
    Case "05"
    mnth = "May"
    Case "06"
    mnth = "Jun"
    Case "07"
    mnth = "Jul"
    Case "08"
    mnth = "Aug"
    Case "09"
    mnth = "Sep"
    Case "10"
    mnth = "Oct"
    Case "11"
    mnth = "Nov"
    Case "12"
    mnth = "Dec"
  End Select
    
    GetDate = splitty(1) & "-" & mnth & "-" & splitty(2)
    
End Function

另外,我也使用了美国日期格式,以便 VBa 能够与您的查询匹配。

在此处输入图片描述

如何在 MS Office 中添加 VBA?

记住,使用 VBa 时,请先复制文件作为备份(没有撤消选项)

相关内容