雷蒙德(Raymond)的工作要求他设置日期格式,以便以他认为比较奇怪的格式显示日期。例如,如果某个单元格包含一个10/20/19日期,则他需要该日期显示为“ SU 10/20”,且不带引号。 (SU是一周中一天的两个字符的表示形式,在本例中为星期天。)Raymond想知道是否有一种方法可以作为自定义格式。

使用自定义格式无法完全做到这一点。原因是没有自定义格式的代码允许您创建一周中的两个字符的一天。以自定义格式可以执行的最接近的日期是一周中的三个字符的一天:

ddd m/d

但是,即使这样也有些偏离,因为它不会大写一周中的三个字符的一天。

因此,这导致我们使用公式得出格式化日期。

如果您在单元格A1中有日期,则可以使用以下公式:

=LEFT(UPPER(TEXT(A1,"ddd")), 2) & " " & TEXT(A1,"m/d")

它使用TEXT函数首先返回一周中的三个字符的星期几,并使用UPPER公式将其转换为大写。然后使用LEFT函数获取该工作日的前两个字符,然后将其添加到月/日组合中。这恰好返回了雷蒙德想要的。

使用此方法的不利之处在于,公式返回的日期是文本。这不是实际日期。如果我们能够使用自定义格式,则基础日期值将保持不变。

但是,对于任何像这样的奇数日期格式,都是如此。

由于存在这种潜在的缺点,您可能希望将实际日期保留为日期,即使该日期位于隐藏的列或隐藏的工作表中也是如此。

如果需要,您还可以创建一个宏,该宏将返回带有格式化日期的字符串。这是一个简单的用户定义函数:

Function FmtDate(d As Date) As String     Dim s As String

s = UCase(Left(WeekdayName(Weekday(d)), 2))

s = s & " " & Format(d, "m/d")

FmtDate = s End Sub

然后,可以在工作表中以以下方式使用该函数:

=FmtDate(A1)

假定日期在A1中,并且该函数返回日期字符串,格式为Raymond期望。

注意:

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

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

本提示(13704)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。