我有一个包含多张工作表的 Excel 工作簿。我需要做的是将年份从一张纸中的一列转移到另一张纸上。我可以让专栏顺利转移,但我不能让它只给我日期。
日期采用dd-mon-yy格式(例如14-Jul-14)。我需要的是把它yyyy放进去(例如2014)。任何帮助都会很棒。
我正在尝试的代码是这样的,但它不起作用。
[...]
For I=5 to 5
If Not TransferCol (5) = 0 Then
Worksheets ("Results").Cells.(Row, StartColumn + I) = Worksheets("Program").Cells(RowTransfer, Year (TransferCol (5)))
Exit Do
End If
Next
[....]
Run Code Online (Sandbox Code Playgroud)
在我看来,(至少)有两种方法可以实现你想要的。
您可以复制整个日期并将目标单元格格式设置为仅显示年份,而不是从源日期中提取年份。这样,您就可以保留原始日期信息,但只显示您感兴趣的部分。下面是一个将日期复制到"Sheet1"/Cell(1,1)并"Sheet2"/Cell(1,1)用于NumberFormat将目标单元格格式设置为仅显示 4 位年份部分的示例:
Public Sub test1()
Dim rSrc As Range
Dim rDst As Range
Set rSrc = Sheets("Sheet1").Cells(1, 1)
Set rDst = Sheets("Sheet2").Cells(1, 1)
rDst = rSrc
rDst.NumberFormat = "yyyy"
End Sub
Run Code Online (Sandbox Code Playgroud)
Year()功能在这种情况下,您需要注意的是确保目标单元格的格式为(整数)数字。如果将其格式化为日期,则结果将非常错误,因为它将使用年份值作为距 1901 年或附近年份的日期偏移量。代码本身很简单。我使用前面的示例作为基础:
Public Sub test2()
Dim rSrc As Range
Dim rDst As Range
Set rSrc = Sheets("Sheet1").Cells(1, 1)
Set rDst = Sheets("Sheet2").Cells(1, 1)
rDst = Year(rSrc)
End Sub
Run Code Online (Sandbox Code Playgroud)
这两个例子都很简单,但我希望它们能给你一个总体思路。我相信您可以根据您的要求进行调整。
| 归档时间: |
|
| 查看次数: |
29804 次 |
| 最近记录: |