在开发工作簿时,可能需要在日期的末尾放置诸如“ st,nd,rd或th”之类的后缀,例如“ 3月9日”。

不幸的是,无法使用可应用于单个单元格的内置日期格式来执行此操作。如果需要,可以为四种后缀类型中的每一种创建自定义格式,但是必须根据单元格本身的内容分别应用它们。

唯一的其他选择是使用某种转换公式。这些很容易组合在一起,但是生成的单元格将不包含真实的Excel日期,而是文本。这使得单元格内容无法用于其他与日期有关的功能。以下是可以使用的转换公式类型的示例:

=DAY(A1)&IF(OR(DAY(A1)={1,2,3,21,22,23,31}), CHOOSE(1*RIGHT(DAY(A1),1),"st","nd ","rd "),"th")

&TEXT(A1,"mmmm, yyyy")

还有其他一些,但它们基本上都做相同的事情-将日期的各个部分分开,然后将它们与适当的后缀放在一起。

如果您愿意,还可以创建一个宏函数,该函数将返回带有后缀的正确格式的日期。以下是一个这样的宏:

Function OrdinalDate(myDate As Date)

Dim dDate As Integer     Dim dText As String     Dim mDate As Integer     Dim mmmText As String

dDate = Day(myDate)

mDate = Month(myDate)



Select Case dDate         Case 1: dText = "st"

Case 2: dText = "nd"

Case 3: dText = "rd"

Case 21: dText = "st"

Case 22: dText = "nd"

Case 23: dText = "rd"

Case 31: dText = "st"

Case Else: dText = "th"

End Select

Select Case mDate         Case 1: mmmText = " January"

Case 2: mmmText = " February"

Case 3: mmmText = " March"

Case 4: mmmText = " April"

Case 5: mmmText = " May"

Case 6: mmmText = " June"

Case 7: mmmText = " July"

Case 8: mmmText = " August"

Case 9: mmmText = " September"

Case 10: mmmText = " October"

Case 11: mmmText = " November"

Case 12: mmmText = " December"

End Select

OrdinalDate = dDate & dText & mmmText End Function

您只需在单元格公式中调用宏即可使用该宏。例如,如果您在单元格B7中存储了日期,则可以在其他任何单元格中使用以下内容:

=OrdinalDate(B7)

注意:

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

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

本技巧(10033)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: