跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中列出指定月份的所有日期?

Author Siluvia Last modified

在Excel中处理基于日期的数据时,创建特定月份的每一天的列表是一个常见的需求——例如,用于规划、调度、报告或跟踪目的。虽然Excel的填充序列功能通常用于此任务,但确保您的列表不超过该月的最后一天可能是一个挑战,特别是对于天数不同的月份。如果您需要一种方法来生成与任何指定月份的确切天数相匹配的准确、自动的列表,本文提供了几种针对不同Excel技能水平和场景的实际解决方案。

使用公式列出指定月份的所有日期

VBA代码 - 自动生成一个月的所有日期

内置Excel方法 - 填充序列功能


使用公式列出指定月份的所有日期

公式是一种灵活的、基于单元格的解决方案,适用于任何需要列出单个月内所有日期的人。这种方法允许您自动生成和填充日期,无需手动计数天数。它非常适合简单的、可重复的任务,比如为不同月份准备多张表格。请按照以下步骤操作:

1. 首先在空白单元格中输入目标月份的第一天。例如,在单元格A2中输入2016/7/1。您可以根据需要使用目标月份和年份。

2. 点击起始日期下方的单元格(在这里是单元格A3)。输入以下公式并按Enter键

=IF(A2="","",IF(MONTH(A2+1)<>MONTH(A2),"",A2+1))

A screenshot showing the formula entered below the first date of the specified month

此公式检查是否增加日期,并且当日期超出起始月份时,将使单元格保持空白。即使拖动超过月份末尾,也不会显示额外的日期。

3. 接下来,确保结果显示单元格格式为日期格式。找到刚刚输入公式的单元格,然后导航到“开始” > “数字格式”下拉菜单 > “短日期”。这一步很重要——如果单元格是常规或数字格式,您可能只会看到一个序列号而不是实际日期。

A screenshot showing the process to format a cell to display dates in Excel

4. 在仍然选中公式单元格的情况下,拖动填充柄(单元格右下角的小方块)向下移动。继续拖动超过预期的月份天数——例如,如果是7月,您可以安全地至少拖动31行。无论拖动多远,日期只会填充属于指定月份的单元格,防止溢出到下个月。

A screenshot showing all dates in a specified month listed in Excel using Fill Handle


VBA代码 - 自动生成指定月份的所有日期

对于希望避免手动输入公式的用户,尤其是当需要重复生成日期列表或跨多个工作表时,简单的VBA宏可以自动化此过程。这种方法特别有用,当您想通过几次点击生成一个可定制的日期序列时。使用VBA,您可以提示输入目标月份和年份,代码将快速为您生成所有相关日期。

1. 点击“开发工具” > “Visual Basic”以打开Microsoft Visual Basic for Applications编辑器。在VBA编辑器中,点击“插入” > “模块”,并将以下代码粘贴到新创建的模块中:

Sub ListAllDatesOfMonth()
    Dim y As Integer
    Dim m As Integer
    Dim startDate As Date
    Dim endDate As Date
    Dim i As Integer
    Dim xTitleId As String
    Dim destCell As Range
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    y = Application.InputBox(prompt:="Please enter the year (e.g.2023)", Title:=xTitleId, Type:=1)
    If y = 0 Then Exit Sub
    
    m = Application.InputBox(prompt:="Please enter the month number (1-12)", Title:=xTitleId, Type:=1)
    If m = 0 Then Exit Sub
    
    Set destCell = Application.InputBox(prompt:="Select the starting cell for your dates", Title:=xTitleId, Type:=8)
    If destCell Is Nothing Then Exit Sub
    
    startDate = DateSerial(y, m, 1)
    endDate = DateSerial(y, m + 1, 0)
    
    For i = 0 To endDate - startDate
        destCell.Offset(i, 0).Value = startDate + i
    Next i
    
    destCell.Resize(endDate - startDate + 1, 1).NumberFormat = "yyyy/m/d"
End Sub

2点击 Run button 运行 按钮(或按 F5),并根据提示输入年份、月份,并选择日期应开始的单元格。

注意事项和提示:

  • 对于月份输入,输入数字——1月是1,2月是2,依此类推。
  • 所有生成的日期将格式化为“yyyy/m/d”。如果需要,可以在NumberFormat行中编辑日期格式。
  • 如果您输入错误或想要重新生成列表,只需重新运行宏即可。
  • 当您经常创建日期列表或自动化重复报告时,此解决方案效果最佳。

内置Excel方法 - 填充序列功能

另一个直接的内置Excel方法来列出一个月内的所有天数是使用填充序列功能——这种方法对于不熟悉公式或VBA的用户尤其有帮助。通过明确定义步长值(1天)并指定停止值为目标月份的最后一天,您可以为目标月份创建精确的日期列表。

  1. 在空白单元格中输入特定月份的第一天(例如,A2,输入2023/4/1表示2023年4月1日)。确保Excel识别您的输入为日期——如果不放心,可以在单元格中使用=DATE(2023,4,1)以明确日期。
  2. 选择起始单元格(A2)。然后,转到“开始” > “填充” > “序列...”以打开“序列”对话框。
  3. 在“序列”对话框中:
    • 如果希望日期按列列出,请选择“”;如果希望横向列出,请选择“”。
    • 类型设置为“日期”。
    • 日期单位设置为“”。
    • 步长值设置为1(每天递增1天)。
    • 停止值中,输入目标月份的最后一天。例如,如果是2023年4月,则输入2023/4/30
  4. 点击“确定”。Excel现在将在选定的单元格范围内填充从指定月份的第一天到最后一天的所有日期。

优点和注意事项

  • 此方法不需要记忆或编辑公式。
  • 您需要手动提供每个月的起始和终止日期。
  • 如果在终止值中出错,列表要么不完整,要么会包含多余的天数。请仔细检查结束日期,特别是在2月和闰年期间。
  • 填充序列后,如有必要,可以使用“开始” > “数字格式”将所有单元格格式化为日期。

上述每个解决方案都有独特的优势:公式动态且易于复制到其他月份;VBA支持一键自动化大规模使用;填充序列快速且直观,适合偶尔的任务。如果遇到问题,请确认输入的日期格式可被识别,并在使用VBA时确保启用了宏并且选择了有效的单元格范围。对于更复杂的排程(包括周末、节假日或特定的工作日),可能需要额外的公式逻辑或VBA适配。

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠