Table of contents
在这篇文章中,我们将了解在Excel中对日期进行排序的不同方法。 你将学习如何快速地按时间顺序排列日期,按月忽略年份排序,按月和日排序生日,以及如何在输入新值时自动按日期排序。
Excel的内置排序选项是强大而有效的工具,但在对日期进行排序时,它们并不总是能正常工作。 本教程将教你一些有用的技巧,以一种有意义的方式按日期排列Excel,而不会弄乱你的数据。
如何按时间顺序排列日期
在Excel中按时间顺序排列日期是非常容易的。 你只需使用标准的 升序排序 选择。
- 选择你想按时间顺序排序的日期。
- 关于 首页 选项卡,在 格式 组,点击 排序 & 筛选 并选择 从最旧的到最新的排序 或者,你可以使用 A-Z 上的选项。 数据 选项卡,在 排序 & 筛选 组。
如何在Excel中按日期排序
Excel的排序选项也可用于重新排列整个表格,而不仅仅是单列。 要按日期对记录进行排序,保持行数不变,关键点是在提示时扩大选择范围。
以下是在Excel中按日期排序数据的详细步骤。
- 在你的电子表格中,选择没有列标题的日期。
- 关于 首页 标签,点击 排序 & 筛选 并选择 从最旧的到最新的排序 .
- ǞǞǞ 分类警告 将会出现对话框,请保留默认的 扩大选择范围 选择的选项,并点击 分类 :
就这样!记录已经按日期排序,所有的行都保存在一起。
如何在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中按月份名称(或工作日名称)对数据进行排序
如果你有一个月名的清单,作为 文本 在这种情况下,自定义排序会有帮助。
- 选择你想按月名排序的记录。
- 关于 数据 选项卡,在 排序 & 筛选 组,点击 分类 .
- 在 分类 对话框,执行以下操作。
- 隶属 栏目 ,选择包含月份名称的列的名称。
- 隶属 排序在 ,选择 细胞值 .
- 隶属 秩序 , 选择 自定义列表 .
- 在 自定义列表 对话框,选择完整的月份名称( 一月 , 2月 , 三月 ,......)或短名称( 扬 , 2月 , 叁 ...),这取决于你的工作表中是如何列出这些月份的。
完成了!你的数据已经按月份名称按时间顺序排序,而不是按字母顺序排序。
提示:要按以下方式排序 的名称。 一周的日子 ,选择全名( 星期日 , 星期一 , 星期二 ,......)或短名称( 太阳 , 梦之城_梦之城娱乐_梦之城国际娱乐_梦之城国际娱乐平台 , 星期二 ...)中的 自定义列表 对话框。
如何在Excel中按日期自动排序
正如你所看到的,Excel的排序功能可以应对各种挑战。 唯一的缺点是,它不是动态的。 这意味着,你必须在每次变化和添加新信息时重新排序你的数据。 也许你在想,是否有办法在每次添加新日期时自动排序,以便你的数据总是有秩序的。
实现这一目标的最好方法是使用宏。 下面,你将看到几个代码例子,按时间顺序对以下数据进行自动排序。
宏观1:每次工作表改变时自动排序
每当工作表中的任何地方发生变化,就会执行这个宏。
假设你的数据在A列到C列,你想排序的日期在C列,从C2开始。 还假设第1行包含标题(Header:=xlYes)。 如果你的记录在不同的列,那么做如下调整。
- 将A1的引用改为目标区域(包括标题)的左上方单元格。
- 将C2引用改为包含日期的最上面的单元格。
宏观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)。 具体方法如下。
- 按Alt + F11打开VBA编辑器。
- 在 项目探索者 在左边,双击你想自动排序的工作表。
- 将代码粘贴在代码窗口中。
用公式自动排序日期
假设你有一个日期列表,你想让它们按时间顺序自动排列在一个单独的列中,与原始列表并排。 这可以通过以下数组公式来实现。
=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文件)