根据 excel 中的数字显示月份名称

Show name of month according to a number in excel

我想知道是否有一种方法可以将单元格容器的内容显示为整数 (1-12) 作为月份名称 (Jan-Dec)。如果我这样做:

With Cells("A1")
    .NumberFormatLocal = "MMM"
    .Value = 5
End With

Excel 将值 5 读取为 1900 年 1 月 5 日,因此 returns 1 月,而我想要的是 5 月。

问题是我不想在单元格 A1 中写日期,而只想写一个整数。当单元格 A1 按值复制到另一个单元格或读取时,我希望值 copied/read 是 5,而不是 42129,就好像它是 2015 年 5 月 5 日。所以转换不是我想要的。

是否有任何自定义格式代码和其他技术可以帮助将值 1-12 显示为 Jan-Dec?感谢您的帮助!

如果绕过日期和数字规则是关键任务,那么请编写 12 条条件格式规则;每个 number/month 名称从 1 到 12 一个,并为每个 'literal' 拼写缩写月份的自定义格式掩码。

Sub cf_months()
    Dim m As Long, cnf As String
    With Worksheets("Sheet1")
        With .Range("A1")
            .FormatConditions.Delete
            For m = 12 To 1 Step -1
                cnf = StrConv(Format(DateSerial(2016, m, 1), "mmm"), vbUnicode)
                cnf = Join(Split(cnf, vbNullChar), Chr(92))
                cnf = Chr(91) & Chr(61) & m & Chr(93) & Chr(92) & Left(cnf, Len(cnf) - 1) & Chr(59) & Chr(59) & Chr(59)
                .FormatConditions.Add Type:=xlExpression, Formula1:=Chr(61) & .Address(0, 0) & Chr(61) & m
                .FormatConditions(.FormatConditions.Count).NumberFormat = cnf
                Debug.Print cnf
            Next m
        End With
    End With
End Sub