gpt4 book ai didi

vba - 在 Excel 中使用 VBA 从日期中提取年份

转载 作者:行者123 更新时间:2023-12-02 10:27:48 27 4
gpt4 key购买 nike

我有一个包含几张工作表的 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
[....]

最佳答案

在我看来,(至少)有两种方法可以实现你想要的。

1。格式设置

您可以复制整个日期并将目标单元格设置为仅显示年份,而不是从源日期中提取年份。这样您就可以保留原始日期信息,但只显示您感兴趣的部分。以下是将日期从 "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

2。使用 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

这两个例子都很简单,但我希望它们能给你一个总体思路。我相信您可以根据您的要求进行调整。

关于vba - 在 Excel 中使用 VBA 从日期中提取年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24737099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com