【问题标题】: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

【问题讨论】:

    标签: excel vba date


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多