我想在单元格中输入 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 日期并正确格式化。