excel 对单元格的内容执行公式并在同一单元格中提供输出

gstyhher  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(278)

我想写一个宏,它将格式化一个期间日期范围(月和年)。报表将每个期间以mmyy格式显示为数字(例如:922表示2022年9月,1222表示2022年12月,123表示2023年1月,以此类推)
我想要完成的是选择日期范围,并将它们转换为mmm-yy(Dec-22、Jan-23、Feb-23)格式的日期,以便它们可以从最早到最新排序。
我不知道如何将数字123转换为日期,并在不使用公式和帮助行的情况下将其格式设置为Jan-23,我不想这样做。
有什么建议吗?

yeotifhr

yeotifhr1#

VBA中与工作表函数DATE等效的函数是DateSerial。它们具有相同的参数。

Option Explicit

Sub ConvertStrToDate()
    Dim rngPeriods As Range, rngPeriod As Range, strDate As String, datDate As Date

    Set rngPeriods = ThisWorkbook.Worksheets("Sheet1").Range("A2:A7")

    For Each rngPeriod In rngPeriods
        strDate = Format(rngPeriod.Value, "0000")
        datDate = DateSerial(Right(strDate, 2), Left(strDate, 2), 1)
        rngPeriod.Value = datDate
    Next rngPeriod

    rngPeriods.NumberFormat = "mmm-yy"

    Set rngPeriods = Nothing
End Sub

注意,我将整数转换为四个字符的字符串,以使解析更容易。

相关问题