如何在Excel中按日期排序:按时间顺序、按月份、自动排序

  • Share This
Michael Brown

在这篇文章中,我们将了解在Excel中对日期进行排序的不同方法。 你将学习如何快速地按时间顺序排列日期,按月忽略年份排序,按月和日排序生日,以及如何在输入新值时自动按日期排序。

Excel的内置排序选项是强大而有效的工具,但在对日期进行排序时,它们并不总是能正常工作。 本教程将教你一些有用的技巧,以一种有意义的方式按日期排列Excel,而不会弄乱你的数据。

    如何按时间顺序排列日期

    在Excel中按时间顺序排列日期是非常容易的。 你只需使用标准的 升序排序 选择。

    1. 选择你想按时间顺序排序的日期。
    2. 关于 首页 选项卡,在 格式 组,点击 排序 & 筛选 并选择 从最旧的到最新的排序 或者,你可以使用 A-Z 上的选项。 数据 选项卡,在 排序 & 筛选 组。

    如何在Excel中按日期排序

    Excel的排序选项也可用于重新排列整个表格,而不仅仅是单列。 要按日期对记录进行排序,保持行数不变,关键点是在提示时扩大选择范围。

    以下是在Excel中按日期排序数据的详细步骤。

    1. 在你的电子表格中,选择没有列标题的日期。
    2. 关于 首页 标签,点击 排序 & 筛选 并选择 从最旧的到最新的排序 .

    3. ǞǞǞ 分类警告 将会出现对话框,请保留默认的 扩大选择范围 选择的选项,并点击 分类 :

    就这样!记录已经按日期排序,所有的行都保存在一起。

    如何在Excel中按月份排序

    有些时候,你可能希望 按月排序 在这种情况下,默认的Excel排序功能将不起作用,因为它总是考虑年份,即使你的单元格被格式化为只显示月或月和日。

    解决办法是添加一个辅助列,提取月号并按该列排序。 要从日期中获取月份,使用MONTH函数。

    在下面的截图中,我们用这个公式从B2中的日期中提取出月号。

    =MONTH(B2)

    提示:如果结果显示为日期而不是数字,请设置为 一般 格式到公式单元格。

    现在,通过以下方式对你的表格进行排序 月份 为此,选择月份编号(C2:C8),点击 排序 & 筛选 > 从小到大的排序 如果所有操作正确,你将得到以下结果。

    请注意,我们的数据现在是按月排序的,忽略了每个月内的年份和日期。 如果你想 按月和日排序 ,然后按照下一个例子的说明进行操作。

    如果月份名称被输入为 文本 ,然后按照本例中解释的自定义列表进行排序。

    如何在Excel中按月和日对生日进行排序

    当为生日日历安排日期时,最佳方案是按月和日排序。 因此,你需要一个公式,从出生日期中提取月和日。

    在这种情况下,Excel的TEXT函数就派上用场了,它可以将日期转换成指定格式的文本字符串。 对于我们的目的,"mmdd "或 "mm.dd "格式代码就可以了。

    在源日期为B2的情况下,该公式的形式是这样的。

    =TEXT(B2, "mm.dd")

    接下来,对 月和日 列从大到小,你将得到按每个月的天数顺序排列的数据。

    使用这样的DATE公式也可以达到同样的效果。

    =date(2000, month(b2),day(b2))

    该公式通过从B2中的实际日期中提取月和日,用一个假的年份代替实际的年份,在这个例子中是2000年,不过你可以用任何年份。 其目的是让所有的日期都有相同的年份,然后按时间顺序对日期列表进行排序。 由于年份相同,日期将按月和日进行排序,这正是你要做的事情。寻找。

    如何在Excel中按年份对数据进行排序

    当涉及到按年份排序时,最简单的方法是用Excel的升序排序法按时间顺序排列日期( 最早的到最新的 ) 选项。

    这将按年,然后按月,再按日进行日期排序,如下图所示。

    如果由于某种原因,你对这样的安排不满意,那么你可以用YEAR公式添加一个辅助列,从日期中提取年份。

    =YEAR(C2)

    在对数据进行排序后,按 列,你会注意到日期只按年份排序。 无视月和日 .

    提示:如果你想 按日期排序 不考虑月和年,通过使用DAY函数提取日期,然后按以下方式排序 列。

    =DAY(B2)

    如何在Excel中按周数排序

    要按工作日排序,你还需要一个辅助列,就像前面的例子一样。 在这种情况下,我们将用WEEKDAY公式来填充辅助列,该公式会返回一个对应于星期几的数字,然后按辅助列进行排序。

    对于从周日(1)到周六(7)开始的一周,要使用这个公式。

    =WEEKDAY(A2)

    如果你的一周是从周一(1)到周日(7)开始,这里就是正确的。

    =weekday(a2, 2)

    其中A2是包含日期的单元格。

    对于这个例子,我们使用了第一个公式,得到了这个结果。

    如果工作日的名称被输入为 文本 ,而不是日期,然后使用自定义排序功能,如下例所解释的。

    如何在Excel中按月份名称(或工作日名称)对数据进行排序

    如果你有一个月名的清单,作为 文本 在这种情况下,自定义排序会有帮助。

    1. 选择你想按月名排序的记录。
    2. 关于 数据 选项卡,在 排序 & 筛选 组,点击 分类 .
    3. 分类 对话框,执行以下操作。
      • 隶属 栏目 ,选择包含月份名称的列的名称。
      • 隶属 排序在 ,选择 细胞值 .
      • 隶属 秩序 , 选择 自定义列表 .
    4. 自定义列表 对话框,选择完整的月份名称( 一月 , 2月 , 三月 ,......)或短名称( , 2月 , ...),这取决于你的工作表中是如何列出这些月份的。

  • 点击两次 "确定",关闭两个对话框。
  • 完成了!你的数据已经按月份名称按时间顺序排序,而不是按字母顺序排序。

    提示:要按以下方式排序 的名称。 一周的日子 ,选择全名( 星期日 , 星期一 , 星期二 ,......)或短名称( 太阳 , 梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台 , 星期二 ...)中的 自定义列表 对话框。

    如何在Excel中按日期自动排序

    正如你所看到的,Excel的排序功能可以应对各种挑战。 唯一的缺点是,它不是动态的。 这意味着,你必须在每次变化和添加新信息时重新排序你的数据。 也许你在想,是否有办法在每次添加新日期时自动排序,以便你的数据总是有秩序的。

    实现这一目标的最好方法是使用宏。 下面,你将看到几个代码例子,按时间顺序对以下数据进行自动排序。

    宏观1:每次工作表改变时自动排序

    每当工作表中的任何地方发生变化,就会执行这个宏。

    假设你的数据在A列到C列,你想排序的日期在C列,从C2开始。 还假设第1行包含标题(Header:=xlYes)。 如果你的记录在不同的列,那么做如下调整。

    • 将A1的引用改为目标区域(包括标题)的左上方单元格。
    • 将C2引用改为包含日期的最上面的单元格。
    Private Sub Worksheet_Change( ByVal Target As Range) On Error Resume Next Range( "A1").Sort Key1:=Range( "C2"), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:= False , _ Orientation:=xlTopToBottom End Sub

    宏观2:当对特定范围进行修改时自动排序

    如果你正在处理一个包含大量信息的巨大工作表,那么在工作表中的任何变化都会导致重新排序的麻烦。 在这种情况下,将宏的触发限制在特定范围内发生的变化是有意义的。 下面的VBA代码只在包含日期的C列发生变化时对数据排序。

    Private Sub Worksheet_Change( ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range( "C:C") Is Nothing Then Range( "A1").Sort Key1:=Range( "C2"), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False , _ Orientation:=xlTopToBottom End If 结束 Sub

    提示:这些宏可以用来按以下方式自动排序 任何数据类型 我们的示例代码是按升序排序的。 如果你想要 降序排序 , 将Order1:=xlAscending改为Order1:=xlDescending。

    如何将宏添加到你的工作表中

    由于这两个宏都是在工作表变化时自动运行的,因此应将代码插入到你想对数据进行排序的工作表中(本例中为工作表1)。 具体方法如下。

    1. 按Alt + F11打开VBA编辑器。
    2. 项目探索者 在左边,双击你想自动排序的工作表。
    3. 将代码粘贴在代码窗口中。

    用公式自动排序日期

    假设你有一个日期列表,你想让它们按时间顺序自动排列在一个单独的列中,与原始列表并排。 这可以通过以下数组公式来实现。

    =IFERROR(INDEX($A$2:$A$20, MATCH(ROWS($A$2:A2), COUNTIF($A$2:$A$20, "<="&$A$2:$A$20), 0)), " ")

    其中A2:A20是原始(未分类)的日期,包括一些可能的新条目的空单元格。

    在原始日期列(本例中为C2)旁边的空白单元格中输入公式,并同时按下Ctrl + Shift + Enter键来完成。 然后,将公式向下拖动到其余的单元格(本例中为C2:C20)。

    提示:要使新添加的日期自动排序,请确保在参考范围内包括足够数量的空白单元格。 例如,我们的日期列表在A2:A7范围内,但我们向公式提供$A$2:$A$20,并将其填充到C2至C20单元格中。 IFERROR函数防止额外单元格中的错误,而是返回一个空字符串("")。

    Excel按日期排序不工作

    如果你的日期没有按规定排序,很可能是以Excel无法理解的格式输入的,因此它们被认为是文本字符串而不是日期。 下面的教程解释了如何区分所谓的 "文本日期 "并将其转换为正常的Excel日期:如何在Excel中将文本转换为日期。

    这就是在Excel中按日期排序的方法。 感谢你的阅读,希望下周能在我们的博客上见到你

    可用的下载

    按日期排序的公式示例(.xlsx文件)。

    自动排序宏(.xlsm文件)

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.