如何在vba中仅显示年份?

时间:2019-03-07 22:37:10

标签: excel vba date

我以常规格式设置了以下数据。

enter image description here

一整年都没有提供日期或月份。
我要实现的是,yyyy格式显示日期

我做了一个标准的DateSerial函数,可以将数据正确地转换为日期。

Private Function toDate(ByVal text As String) As Date
    toDate = DateSerial(Int(text), 1, 1)
End Function

For Each cell in ws.Range("A21:A" & lr)
    cell = toDate(cell)
    cell.NumberFormat = "yyyy"
Next cell
  

现在,从技术上讲,这是可行的,但是如果您在单元格中单击,它将   很明显,日期仅显示为01-01-year-这是可以预期的   与日期有关

     

enter image description here

     

enter image descriptionhere

     

但是我想知道,是否有可能以某种方式给出我的数据   省略DaysMonths并仅将结果显示为year

基本上,我需要将数据转换为Date数据类型,而无需指定日期和月份

1 个答案:

答案 0 :(得分:1)

可以这样输入年份并将日期格式设置为“ YYYY”:

Sub TestMe()

    With ThisWorkbook.Worksheets(1)
        .Range("A1") = 2011
        .Range("A2") = 2013
        .Range("A3") = 2011

        Dim myCell As Range
        For Each myCell In .Range("A1:A3")
            myCell = DateSerial(myCell, 1, 1)
            myCell.NumberFormat = "yyyy"
        Next myCell
    End With

End Sub

“技巧”是DateSerial(myCell, 1, 1)从单元格中提取年份,并为日期添加1,为月份添加1月。因此,每年都表示为该年的1月1日。

有关VBA和Excel中的Date的更多信息-VBA doesn't return the correct Date with Now()