数字格式类别:为什么将其识别为风俗?
在以下平台上测试
我的客户问一个问题:当他在单元格中输入“ 2020年1月1日”时,Excel会识别并转换为2020年1月1日,当您双击该单元格,进入单元格编辑模式时,其值更改为2020/1/1。
但是,当检查数字格式时,它被归类为自定义
在日期类别中,存在与excel呈现给客户的格式完全匹配的格式。
那么有人可以分享一些见解,为什么将用户输入“ 2020年1月1日”识别为自定义而不是日期?
答案 0 :(得分:1)
我得到了答案:
如果选择所需的格式,然后切换到自定义,则此对话框将向您显示Excel使用了哪些格式代码。在这种情况下,实际的日期格式为[$-en-US]d-mmm-yy;@
,而不是自动检测的d-mmm-yy
。
两种格式之间的区别在于d-mmm-yy
会针对不同的用户区域设置进行本地化,而[$-en-US]d-mmm-yy;@
不会。它与英语(美国)联系在一起。
在Windows中,可以通过Win + R-> intl.cpl根据用户区域设置对其进行更改。
Excel的逻辑是获取数字格式,然后对所有类别进行线性搜索以查看其存在于任何地方。对于两种默认情况下都是“自定义”的格式,它也会以“自定义”结尾,而且如果根本找不到匹配项,它将以“自定义”结尾。 1 jan 2020
未分类为日期-格式为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