如何在 Excel 中按年、季度、月或周统计出现次数?
在日常工作中,数据分析常需按时间段汇总记录或事件数量,例如统计每月销售额、按周跟踪活动频率,或按季度分析季节性趋势。虽然 Excel 中的 COUNTIF 函数可根据特定条件统计数据,但若要直接按年、月、季度或周对日期进行分组计数,操作往往不够直观。为解决这一难题,本文为您介绍几种实用且易于操作的方法,助您高效汇总与分析基于时间的数据,轻松避免手动计数错误!
- 使用公式按年/月统计出现次数
- 使用 Kutools for Excel 按年/月/星期几/日统计出现次数
- 使用数据透视表按年/月/季度/小时统计出现次数
- VBA 宏:按年/季度/月/周自动汇总统计出现次数
- 使用 WEEKNUM 公式按周统计出现次数
使用公式按年/月统计出现次数
当您需要快速了解特定年份或月份中某事件发生的次数时,公式提供了一种灵活且动态的解决方案。通过将内置日期函数与 SUMPRODUCT 结合使用,即可直接按年、月或任意组合统计次数,汇总结果还能在源数据更新时自动刷新。此方法适用于大多数中小型数据集的常规分析任务,助您轻松掌握数据动态!
选择一个空白单元格用于显示统计结果,然后输入以下公式:
=SUMPRODUCT((MONTH($A$2:$A$24)=F2)*(YEAR($A$2:$A$24)=$E$2))
输入公式后,向下拖动单元格的自动填充柄,即可将公式应用到其他行(如需要)。如下图所示:
注意事项与技巧:
- 公式中的
MONTH($A$2:$A$24)=F2和YEAR($A$2:$A$24)=$E$2用于匹配 F2 中指定的月份和 E2 中指定的年份。请根据您的数据布局更新范围和单元格引用(例如 )A2:A24、E2、F2)。 - 若仅按月统计,忽略年份,请使用:
=SUMPRODUCT(1*(MONTH($A$2:$A$24)=F2)) - 请确保日期列包含真实的 Excel 日期值,而非文本格式的日期,以免引发错误或匹配异常。若公式返回意外结果,请仔细核查日期格式。
- 若您的数据集较大,建议使用数据透视表或 VBA,以提升性能并简化维护。
此方法适用于大多数需要快速进行日期统计的场景,并能在数据修改后自动更新结果。然而,若使用多个分组条件,公式可能会变得复杂,难以维护。
使用 Kutools for Excel 按年/月/星期几/日统计出现次数
如果您已安装 Kutools for Excel,即可借助其直观的工具,按年、月、星期几、日,或进一步组合(如年 & 月、月 & 日)对出现次数进行分组统计,无需编写复杂公式。此方法尤其适合追求可视化、菜单驱动解决方案的用户。
1. 选择包含日期的列,然后单击 Kutools > 格式 > 应用日期格式,即可弹出以下对话框:
2. 在“应用日期格式”对话框中,选择符合您统计需求的格式样式(例如月、年、星期几、日等),然后单击确定。例如,选择“Mar”即可按月统计。
3. 在仍选中日期列的情况下,单击 Kutools> 转为实际值。此步骤会将所有日期转换为显示值(例如月份名称),便于后续步骤更轻松地分组。
4. 接下来,选择包含已转换分组名称及相关数据(例如金额或类别列)的区域,然后转到 Kutools > 内容 > 高级合并行。您将看到以下界面:
5. 在高级合并行对话框中:
(1) 将您的日期列设为主键,即可按该列分组。
(2) 对于要统计的列(例如金额),将计算方式设为计数。
(3) 您还可为其他列选择其他聚合或组合方式(例如用逗号连接水果名称)。
(4) 单击确定即可执行处理。
您的数据将立即呈现所选周期内记录的统计数量,如下图所示:
Kutools for Excel——通过 300 多款必备工具全面增强 Excel 功能,助您工作更快速、更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取
相比手动输入公式,Kutools 显著简化了操作流程,有效减少人为错误,特别适合需要频繁进行分组统计、又希望避开公式复杂性的用户。无论小型还是大型数据集,它都能轻松应对。在执行批量转换或合并行之前,请务必备份您的数据。
使用数据透视表按年/月/季度/小时统计出现次数
数据透视表为您提供一种强大而交互式的方式,轻松分析大型数据集——只需单击几下,即可按一个或多个时间维度(如年、月、季度、小时等)快速汇总出现次数。它还支持灵活的重新配置与筛选,是探索数据规律或准备管理报告的理想之选。
1. 选择您的数据表,然后转到插入> 数据透视表,即可弹出“创建数据透视表”对话框。
2. 在对话框中指定数据透视表的放置位置(新工作表或现有位置,例如单元格 E1),然后单击确定。
3. 在“数据透视表字段”窗格中,将日期字段拖至行区域,并将金额(或目标字段)拖至值区域。默认情况下,数值将自动求和。
数据透视表将如下图所示:
右键单击值列标题(例如“金额求和”),然后选择值字段设置中的计数,即可将值计算方式更改为计数。
要按其他时间段(如月份、年份或季度)分组,请右键单击“行标签”列中的任意单元格,选择组合,然后在弹出的对话框中选择分组依据(如“月”、“年”或“季度”),再单击确定。
您的表格现在会按所选时间段显示计数:
注意:按多个时间段(例如月份和年份)分组会在“行标签”中添加额外层级。您可在“数据透视表字段”窗格中调整分组字段的顺序(例如将)日期下方的年份上移或下移),以优化汇总视图。
此方法最适合处理大型且动态变化的数据集,尤其适用于需要定期进行分组、对比与汇总的场景;但对于需快速完成临时性单元格级计算,或尚不熟悉数据透视表功能的用户而言,则不太适用。
VBA 宏:按年/季度/月/周自动汇总统计出现次数
当您需要反复按不同时间段生成出现次数汇总,或希望在大型数据集中通过自动化提升计数效率时,自定义 VBA 宏是一种高效之选。尤其适用于需定期处理数据、生成周期性汇总表,或依赖公式与数据透视表难以实现的自定义分组(如财年季度或周)等场景。
完整操作步骤:
- 首次运行任何宏之前,请务必备份您的工作簿。
- 单击开发工具选项卡中的 Visual Basic,即可打开 VBA 编辑器。
- 单击插入 > 模块,然后将下方代码复制并粘贴到模块窗口中。
Sub CountOccurrencesByPeriod()
Dim lastRow As Long
Dim ws As Worksheet, summaryWs As Worksheet
Dim periodType As String
Dim dict As Object, key As Variant
Dim dateRange As Range, cell As Range
Dim outputRow As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set ws = Application.ActiveSheet
Set dateRange = Application.InputBox("Select date range:", xTitleId, Selection.Address, Type:=8)
periodType = Application.InputBox("Count by (Year/Quarter/Month/Week):", xTitleId, "Month", Type:=2)
If dateRange Is Nothing Or periodType = "" Then Exit Sub
Set dict = CreateObject("Scripting.Dictionary")
For Each cell In dateRange
If IsDate(cell.Value) Then
Select Case LCase(periodType)
Case "year"
key = Year(cell.Value)
Case "quarter"
key = "Q" & WorksheetFunction.RoundUp(Month(cell.Value) / 3, 0) & " " & Year(cell.Value)
Case "month"
key = Format(cell.Value, "yyyy-mm")
Case "week"
key = "W" & WorksheetFunction.WeekNum(cell.Value) & " " & Year(cell.Value)
Case Else
key = Format(cell.Value, "yyyy-mm")
End Select
If dict.Exists(key) Then
dict(key) = dict(key) + 1
Else
dict.Add key, 1
End If
End If
Next cell
Set summaryWs = Worksheets.Add(After:=ws)
summaryWs.Name = "Occurrence_Summary"
summaryWs.Range("A1").Value = "Period"
summaryWs.Range("B1").Value = "Occurrences"
outputRow = 2
For Each key In dict.Keys
summaryWs.Cells(outputRow, 1).Value = key
summaryWs.Cells(outputRow, 2).Value = dict(key)
outputRow = outputRow + 1
Next key
MsgBox "Summary completed in sheet 'Occurrence_Summary'.", vbInformation
End Sub 输入代码后:
- 返回 Excel,按下 Alt+F8,选择 CountOccurrencesByPeriod,然后点击运行。
- 系统将提示您选择要分析的日期范围,请选取包含日期的相应列或区域。
- 第二个提示将询问您希望按哪个周期分组:请输入“Year”(年)、“Quarter”(季度)、“Month”(月)或“Week”(周)(不区分大小写)。
- 该宏将生成一个名为 Occurrence_Summary 的新工作表,列出每个周期及其对应的出现次数。
故障排除与技巧:
- 如遇宏安全警告,请前往文件 > 选项 > 信任中心 > 宏设置调整宏设置。
- 请确保您的日期列包含有效的 Excel 日期值,因为文本字符串或混合格式可能导致计数不准确甚至出错。
- 该宏灵活便捷——输入“Quarter”即可快速按年和季度分组统计,输入“Week”则能轻松按周汇总。
- 如果您希望自定义输出(例如添加更多详细信息),可修改宏以处理其他列或应用不同的计算规则。
此方案适用于批量生成报告或开展周期性分析,但要求用户具备基础的 VBA 知识,并能有效管理工作簿。若需实现可视化汇总,可结合使用数据透视表与 VBA。
使用 WEEKNUM 公式按周统计出现次数
在销售跟踪、项目管理和资源分配中,按周统计条目或事件的频率是一项常见需求。Excel 提供了 WEEKNUM 函数,可返回指定日期在一年中的周数,便于通过公式轻松按周对数据进行分组。
适用场景:您有一份日期列表(如销售或考勤数据),希望统计每年各周包含多少条记录。该方法适用于持续性分析,且在数据频繁变动时,计数结果将自动更新。
1. 在空白列中(例如 B2)输入以下公式,即可为 A 列中的每个日期计算对应的周数:
=WEEKNUM(A2,1) 第二个参数(“1”)表示每周从周日开始(若希望每周从周一开始,请将其改为“2”)。将此公式向下填充至所有日期数据行。
2. 列出您要汇总的周数(例如 1、2、3 等)。在另一个空白单元格中(例如 D2),使用以下公式统计特定周数的出现次数(假设 B2:B24 为周数列表,且 D2 中包含要查找的周数):
=COUNTIF($B$2:$B$24, D2) 按 Enter 后,将此公式向下拖动以覆盖您的周数列表,每个结果将显示对应周的出现次数。
技巧与注意事项:
- 如需按年份和周数同时统计,以区分不同年份的数据条目,请使用以下公式:
=SUMPRODUCT((YEAR($A$2:$A$24)=$F$2)*(WEEKNUM($A$2:$A$24,1)=G2))其中 F2 为目标年份,G2 为目标周数。请根据实际数据范围调整列引用。 - WEEKNUM 函数的周数可能因系统设置、美国/ISO 标准或您自定义的每周起始日而有所不同。
- 若需使用 ISO 周数(欧洲标准:每周从周一开始,且第一周为包含该年首个周四的周),请使用
=ISOWEEKNUM(A2)(适用于 Excel 2013 及更高版本)。 - 请务必确保所有日期值均采用有效的 Excel 日期格式,以获得准确结果。
此方法适用于动态数据表,灵活应用于仪表板、周期性汇总,以及在无需数据透视表或额外插件的情况下实现按周交叉计数。
演示:按年/月/工作日/日统计出现次数
相关文章:
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱