将一列日期数字转换为缩写月份

Posted

技术标签:

【中文标题】将一列日期数字转换为缩写月份【英文标题】:Convert a column of date numbers into abbreviated month 【发布时间】:2022-01-23 20:34:22 【问题描述】:

对 VBA 非常陌生,因此对新手问题表示歉意。我有一个 Excel 工作簿,其中包含一个包含日期字符串的列 - 它本身是从另一个来源复制为“粘贴为值”。我需要将该日期编号转换为缩写月份 - 比如一月、二月等。

到目前为止,我已经尝试记录如何手动执行此操作的宏,但该宏不理解公式的自动填充,因此如果数据的长度发生变化,即更多或更少的行,那么它不会填写所有空格或过度填充它们。我尝试修改公式以包含 End(xlDown) 的整个范围,而不是它给出的固定范围,但随后所有行都被填充到最底部,这没有用。

这是我当前宏的代码,但我也愿意接受任何其他可以帮助我将所选行转换为缩写日期格式的解决方案!

Sub ConvertDateStringToMonth()
'
' ConvertDateStringToMonth Macro
'

'
    Columns("I:I").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("I2").Select
    ActiveCell.FormulaR1C1 = "=TEXT(RC[-1], ""mmm"")"
    Range("I2").Select
    Selection.AutoFill Destination:=Range([I2], [I2].End(xlDown))
    Range([I2], [I2].End(xlDown)).Select
    Range("H1").Select
    Selection.AutoFill Destination:=Range("H1:I1"), Type:=xlFillDefault
    Range("H1:I1").Select
    Columns("I:I").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("H:H").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Range("H1").Select
End Sub

【问题讨论】:

【参考方案1】:

没关系,通过一些谷歌搜索和常识,我使用了它并且它有效:

Sub ChangeDate()

    Set DateRange = Range([H2], [H2].End(xlDown))
    
    DateRange.NumberFormat = "mmm"

End Sub

在这里发帖以防其他人有这么简单的问题。

【讨论】:

以上是关于将一列日期数字转换为缩写月份的主要内容,如果未能解决你的问题,请参考以下文章

如何在包含单词、三个字母月份和两位数字年份的字符串中搜索月份和年份并将它们转换为 SQL 中的日期?

mysql中日期转换

如何将excel中的三列数值转换成一列日期

将 Pandas 系列日期时间“月份”数字转换为月份文本 [重复]

在Python里 请问怎么将数字日期转换成英文月份加数字日期? 并且替换分隔符?例子如下

在 PySpark 中使用 to_date 在荷兰语中转换具有不同格式和月份缩写的日期字符串