当Ted输入仅包含月份和日期的日期(即4/5)时,日期将显示5月4日,数字格式为“自定义”。但是,当他输入4/5/18时,日期显示为4/5/2018,数字格式为Date。泰德(Ted)想知道当他仅输入4/5时,如何将日期格式化为4/5/2018,而不必在输入之前将单元格格式化为日期。换句话说,他希望日期默认为日期而不是自定义。

在Excel中无法执行此操作。在这种情况下,作为解析过程的一部分,Excel会根据输入日期的方式选择它认为您想要的日期格式。如果要使用其他日期格式,则必须显式格式化列(或单元格)

在输入日期之前使用所需的日期格式,或者在输入日期之后必须显式格式化列(或单元格)。

有一个基于宏的解决方案,但这可能有点过大。您需要做的就是将此事件处理程序添加到工作表的代码窗口中。 (右键单击工作表选项卡,然后从出现的“上下文”菜单中选择“查看代码”。将此简短的宏粘贴到随后出现的代码窗口中。)

Private Sub Worksheet_Change(ByVal Target As Range)

If IsDate(Target) Then         Target.NumberFormat = "m/d/yyyy"

End If End Sub

宏会检查您输入到单元格中的所有内容,如果确定该日期是日期(这是IsDate函数的目的),则将所需的日期格式应用于该单元格。

我提到这可能有点过大,因为您显然需要将工作簿另存为启用宏的工作簿。但是,如果这对您使用工作簿来说没有问题,则可以解决您的日期格式需求。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13553)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。