Excel数字格式类别:日期还是自定义?(用户输入:“2020年1月1日”)

Excel数字格式类别:日期还是自定义?(用户输入:“2020年1月1日”),excel,Excel,数字格式类别:为什么被识别为自定义 在以下平台上测试 Mac上的Excel(16.37) Windows上的Excel(2002版) 卓越在线 我的客户在问一个问题:当他在单元格中键入“1 jan 2020”时,Excel会识别并转换为1-jan-2020,当您双击该单元格,进入单元格编辑模式时,其值会更改为2020/1/1。 但是,在检查数字格式时,它被归类为自定义 在日期类别中,有一种格式与excel提供给客户的格式完全匹配 那么,有人可以分享一些见解,为什么用户输入“2020年1

数字格式类别:为什么被识别为自定义

在以下平台上测试

  • Mac上的Excel(16.37)
  • Windows上的Excel(2002版)
  • 卓越在线
我的客户在问一个问题:当他在单元格中键入“1 jan 2020”时,Excel会识别并转换为1-jan-2020,当您双击该单元格,进入单元格编辑模式时,其值会更改为2020/1/1。

但是,在检查数字格式时,它被归类为自定义

在日期类别中,有一种格式与excel提供给客户的格式完全匹配

那么,有人可以分享一些见解,为什么用户输入“2020年1月1日”被认为是自定义的而不是日期

我得到了答案: 如果选择所需格式,然后切换到“自定义”,此对话框将显示Excel使用的格式代码。在这种情况下,实际日期格式为
[$-en-US]d-mmm-yy@而不是自动检测到的
d-mmm-yy

这两种格式的区别在于
d-mmm-yy
将针对不同的用户区域进行本地化,但是
[$-en-US]d-mmm-yy@将不显示。它与英语(美国)有关。
在Windows中,可以通过Win+R->intl.cpl根据用户区域设置进行更改

Excel的逻辑是获取数字格式,然后对所有类别进行线性搜索,以查看它是否存在于任何位置。对于默认情况下处于自定义状态的两种格式,它都将以自定义状态结束,但如果根本没有找到匹配项,也会以自定义状态结束<代码>2020年1月1日
未归类为日期-格式为d-mmm-yy,与数据类别中的任何格式都不匹配;它确实匹配自定义类别中的格式,因此它被分类为自定义

以下是VBA中的一个简单解决方法,已剪切到工作簿模块,新条目将具有预期格式:

Private Sub Workbook_SheetChange(ByVal Sheet As Object, ByVal Target As Range)
    With Sheet
        If Target.NumberFormat = "d-mmm-yy" Then
            Target.NumberFormat = "[$-en-US]d-mmm-yy;@"
        End If
    End With
End Sub

它是什么版本的Excel?我在英国使用365,该日期格式仅在自定义中显示。