如何让“Excel for Mac 2016”自动将 yymmdd 的输入转换为 yyyy-mm-dd

如何让“Excel for Mac 2016”自动将 yymmdd 的输入转换为 yyyy-mm-dd

我想在单元格中输入 20201008 或 201008,然后只要按下 Enter 或 Tab 键,“Excel for Mac 2016”就会立即转换并将任一条目显示为 2020-10-08。


 我不想设置另一列使用公式将 20201008 或 201008 转换为 2020-10-08。


 我希望 Excel 在后台进行转换,或者再次在后台作为该单元格的公式,但它可以让我在该单元格中输入 20201008 或 201008,并且只要我按下 Enter 或 Tab 键,单元格就会显示 2020-10-08。


 有人有办法做到这一点吗?


 谢谢!

答案1

这是用于列仅有的。

将以下事件宏放在工作表代码区域:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim B As Range, Intersection As Range, r As Range
    Dim v As String, Lv As Long
    
    Set B = Range("B:B")
    Set Intersection = Intersect(B, Target)
    If Intersection Is Nothing Then Exit Sub
    For Each r In Intersection
        v = r.Text
        Lv = Len(v)
        If Lv = 8 Or Lv = 6 Then
            If IsNumeric(v) Then
                Application.EnableEvents = False
                    r.Clear
                    r.NumberFormat = "yyyy-mm-dd"
                    If Lv = 8 Then
                        r.Value = DateSerial(Left(v, 4), Mid(v, 5, 2), Right(v, 2))
                    Else
                        r.Value = DateSerial("20" & Left(v, 2), Mid(v, 3, 2), Right(v, 2))
                    End If
                Application.EnableEvents = True
            End If
        End If
    Next r
    
End Sub

宏会将您的数字输入转换为真正的 Excel 日期并正确格式化。

相关内容