在Microsoft Excel中从日期中提取年份的5种方法
您是否需要从 Excel 中的日期中提取年份以进行数据预处理或特征工程?您来对地方了。阅读本 Excel 教程直至最后,找到从原始数据中提取年份部分的最佳方法,其中包含分步说明和视觉插图。
Microsoft Excel 提供多种工具和功能,可帮助您以多种方式构建、分析和可视化数据。其中一种方法是从年份角度分析和可视化原始数据。
它可以用于趋势识别、时间序列分析,或者仅仅为了隐藏原始数据中的个人身份信息。
Excel 为您提供了内置函数和单元格格式,可从小型数据集中快速提取年份。如果源数据很大,您可以使用编程工具来自动执行该任务。
在本文中,我将展示五种不同的方法,从 Excel 工作表的各种日期条目(如短日期和长日期)中提取年份条目。
推荐:WordPress代码和文本替换插件Real Time Find and Replace
在 Excel 中从日期中提取年份的原因
学习如何从 Excel 中的日期条目中提取年份的主要原因是自动化。假设您有一个包含出生日期信息的候选人数据集。但您不想向可能处理该数据集的员工或承包商披露这些信息。
您是否创建新列,手动输入年份,然后隐藏原始出生日期列?当然不是!作为 Excel 冠军,您必须学会使用公式或动态 Excel 工具。
以下是需要从数据集中的日期中提取年份的情况:
- 从日期中提取年份对于趋势分析至关重要。它使您能够了解特定时间段内的模式和趋势。
- 在金融领域,从日期中提取年份对于生成年度报告、跟踪财务业绩和满足监管报告要求至关重要。
- 时间序列预测模型通常依赖于年度趋势。提取年份是提高预测准确性的重要预处理步骤。
- 在对数据进行分段分析时,提取年份有助于将信息分组为有意义的时间间隔。然后,您可以轻松比较绩效、销售数据等。
- 在事件驱动分析中,提取年份有助于识别与特定年份相关的模式或相关性。例如,经济事件或营销活动逐年产生的影响。
- 在人口统计分析中,您需要从出生日期中提取出生年份来计算参与研究的人员的年龄。
- 分析网站流量数据涉及从时间戳中提取年份以评估年度用户参与度趋势。
现在,让我们探索从以下日期条目中提取年份部分的各种方法:
使用 YEAR 函数提取年份
在 Excel 中提取短日期或长日期的年份的最简单方法是YEAR函数。
它也是一项可访问的功能,因为 Microsoft 将其包含在 Excel 2007 桌面应用程序中,并且从那时起它已在所有 Excel 版本中可用,包括 Mac 和 Excel for the web。
此功能的使用步骤如下:
- 选择要从短日期或长日期中提取年份值的单元格。
- 在单元格中输入以下公式并点击Enter:
=YEAR(B2)
- Excel 将从相邻单元格中的日期中提取年份
B2
。 - 使用选定单元格的填充柄并将其沿列向下拖动,以将公式应用于工作表中所需的单元格。
- 当您将填充柄拖到列的下方时,Excel 将继续提取年份值。
在上面的公式中,B2
是日期值的源单元格。您可以根据数据集将其更改为任何其他单元格引用。
使用 TEXT 函数提取年份
您主要使用TEXT函数来修改 Excel 在一个或多个单元格中显示数值的方式。您知道也可以使用同一函数从日期值中提取年份部分吗?没错,您也可以使用TEXT函数。
请参阅以下步骤:
- 突出显示日期值旁边的单元格。
- 在单元格中输入以下公式:
=TEXT(B2,"yyyy")
- 打Enter。
- 您应该在单元格中看到年份部分。
- 将公式复制并粘贴到列下方或使用填充柄。
- Excel 将应用公式并提取其余单元格的年份部分。
推荐:SEO数字营销机构WordPress主题Selo
使用 Excel 单元格格式对话框获取年份
单元格格式对话框可让您决定单元格内容在工作表上的显示方式。通过输入自定义单元格格式,您可以限制任何短日期和长日期的月份和日期部分。因此,单元格将仅显示年份部分。
当您想自动隐藏完整日期并仅显示年份部分时,此方法特别有用。例如,您的移动应用或网站通过调查或表格收集访问者的个人身份信息。这些数据可能是出生日期、购买日期、注册日期、结婚日期等等。
您不想向处理数据集的其他人透露完整日期。在这种情况下,请按照以下步骤自定义单元格范围的单元格格式,以便 Excel 仅显示年份部分:
- 突出显示包含短日期或长日期的单元格范围。
- 或者,突出显示一个空白单元格范围,从应用程序或网站收集的日期数据将从该范围填充。
- 按Ctrl+1调出“设置单元格格式”对话框。
- 在左侧面板上选择自定义类别。
- 在类型字段中输入四个或两个Y。
- 单击“确定”。
- Excel 将从源日期中提取年份值。
- 如果您输入新日期,Excel 将仅显示格式化单元格的年份部分。
使用 Power Query 提取年份
将大型数据集导出到 Excel 工作表时,如果您还需要该数据集中的年份部分作为新列,则应使用Power Query来转换导入的数据。
您可以使用 Power Query 从各种来源将数据集导入 Excel。例如,有 SQL 服务器数据库、Azure、Power BI、Dataverse、SharePoint Online 等选项。
对于第三方数据导入,您需要转到“数据”选项卡并单击“获取数据”命令按钮。它将打开可用数据源的上下文菜单。
或者,您也可以将现有的 Excel 工作表数据集导出到 Power Query,按照您想要的方式转换数据,然后将其导出回工作表。为此,您必须使用“数据”选项卡中的“从表/范围”命令。
有两种方法可以从日期中提取年份。您可以创建新列并使用Power Query M 公式:Date.Year([source column])
。或者,您可以使用Power Query 的“转换”选项卡中的“日期” > “年份”函数。
下面我将展示如何通过简单的步骤使用这两种方法:
使用自定义列从日期中提取年份
突出显示要导出到 Power Query 的数据列。然后,单击顶部的“数据”选项卡,然后单击“从表/范围”按钮。
在“创建表”对话框中单击“确定”。默认情况下,“我的表有标题”复选框应处于选中状态。
您现在应该可以看到Power Query 编辑器工具。转到“添加列”选项卡并选择“自定义列”选项。
在自定义列对话框中,输入新列名。它将显示在Power Query 编辑器和Excel 工作表上。此外,在自定义列对话框的公式字段中添加以下公式。
Date.Year([Date of Birth])
在上面的公式中,您需要[Date of Birth]
根据数据集将条目更改为其他条目。例如,如果日期列标题为Dates,则公式将更改为以下内容:
Date.Year([Dates])
在自定义列对话框中单击确定。Power Query 工具将创建一个新列,如上所示,提取年份值,并将其粘贴到新创建的列中。
现在,单击“文件”选项卡并选择“关闭并加载到”选项。
在“导入数据”对话框中,选择“现有工作表”选项并突出显示单元格范围作为Power Query 数据的目标。
单击“导入数据”对话框中的“确定”,您应立即在工作表中获取年份值以及源日期。我删除了出生日期列(日期源),因此数据集不包含任何冗余列。
推荐:修复Windows 11上拒绝访问错误的5种方法
使用日期工具从日期中提取年份
您应该能够按照前面提到的说明将数据集导入 Power Query 编辑器。 然后,按照以下步骤操作:
- 单击“变换”选项卡。
- 单击“日期”下拉菜单并将光标悬停在“年份”选项上。
- 单击溢出菜单中的年份选项。
- Power Query 会将现有的短日期或长日期转换为年份值。
您现在可以使用“关闭并加载到”命令将转换后的数据集导出到您的 Excel 工作表。
使用 Excel VBA 提取年份
当您从大型数据集中提取数千年的值时,Excel VBA为您提供无与伦比的自动化。请随意使用以下 VBA 脚本。我还添加了步骤来刷新您关于如何使用您在网上找到的 VBA 代码的记忆。
从任意单元格的日期中提取年份
以下代码将查找工作表中的所有日期条目。然后,它将从这些条目中提取年份并将结果粘贴到相邻的单元格中。如果没有空白单元格,Excel VBA 将创建一个,然后打印年份值。
Sub ExtractYearsAnyCells()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim extractedYear As Variant
Dim targetCell As Range
' Set the worksheet (change "Sheet1" to your actual sheet name)
Set ws = ThisWorkbook.Sheets("Sheet6")
' Set the range to search for dates (adjust as needed)
Set rng = ws.UsedRange
' Loop through each cell in the range
For Each cell In rng
' Check if the cell contains a date
If IsDate(cell.Value) Then
' Extract the year
extractedYear = Year(cell.Value)
' Set the target cell to the cell next to the current cell
Set targetCell = cell.Offset(0, 1)
' Check if the target cell is not empty
If targetCell.Value "" Then
' Insert a new cell to the right
targetCell.Offset(0, 1).Insert Shift:=xlToRight
' Move to the newly inserted cell
Set targetCell = targetCell.Offset(0, 1)
End If
' Place the extracted year in the target cell
targetCell.Value = extractedYear
End If
Next cell
End Sub
如果需要,请按照上面脚本中提到的注释来自定义任何代码元素。
要使用上述 VBA 脚本创建宏,请按照以下步骤操作:
- 按Alt+F11调用Excel VBA 编辑器。
- 单击插入按钮并选择模块。
- 将上述脚本复制并粘贴到空白模块中。
- 单击“保存”并按照屏幕上的说明将工作簿保存为XLSM(启用宏)文件。
- 关闭 Excel VBA。
- 按Alt+F8打开宏对话框。
- 选择ExtractYearsAnyCells宏并点击运行。
- Excel 将自动查找日期并从这些日期中提取年份值。
从单元格区域内的日期中提取年份
如果您需要告诉 Excel VBA 在选定的单元格范围内执行年份值提取并将结果填充到相邻的列中,请使用此脚本:
Sub ExtractYearsDefinedRange()
Dim ws As Worksheet
Dim rngDates As Range
Dim cell As Range
Dim extractedYear As Variant
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rngDates = ws.Range("B2:B100")
For Each cell In rngDates
If IsDate(cell.Value) Then
extractedYear = Year(cell.Value)
cell.Offset(0, 1).Value = extractedYear
End If
Next cell
End Sub
在此脚本中,修改以下内容以自定义宏:
Sheet1
用准确的工作表名称替换代码元素。B2:B100
根据您的工作表将单元格范围的引用更改为另一个范围。
结论
如果您喜欢数据驱动的决策,那么了解从 Excel 日期中提取年份的技巧是一项宝贵的技能。
在这里,您学习了针对不同情况从日期中提取年份的不同方法。如果您偶尔在小数据集上执行此操作,则可以使用Excel 软件的YEAR和TEXT函数。
假设您想要创建一个数据输入工作表,其中所有短日期和长日期条目都只显示年份部分,您可以使用Excel 的“格式化单元格”工具。
最后,如果您希望节省时间和实现自动化,则可以使用Excel VBA和Power Query等编程方法。