Excel 如何按日期排序
Excel内置的排序选项是强大且有用的工具,但在对日期进行排序时,它们并不总是起作用。在Excel中,我们必须将日期以一种统一的格式来排序数据。
您还可以使用Excel的排序选项来重新排列整个表格,而不仅仅是单独的一列。
按升序或降序排序日期
按照日期的顺序或逆序排序数据的最简单方法是,按照您的偏好,按照日期先后排序数据。要按日期排序,请按照以下步骤进行操作:
步骤1: 转到Data 菜单选项卡,在Sort & Filter类别下。
步骤2: 选择Sort 选项。
另一种在标题中应用筛选器的方法。然后从日期列的下拉菜单中,选择从新到旧或相反的顺序来对Excel中的日期进行排序。
步骤4: 如果您想要按照最旧到最新的顺序排序日期,选择“从旧到新” 按钮。
步骤5: 将出现“排序警告” 对话框。保持默认选中“扩展所选范围” 选项,并点击“排序” 按钮。
结果将导致先列出过去的日期,并将最新的日期放在底部。
步骤 6: 如果你想要将日期从最新到最旧 排序,则执行以下操作。
因此,这会将最近的日期放在前面,并将旧日期推到数据底部。
如何在Excel中按月份排序
假设您想要按月份排序日期,忽略年份,例如分组您的同事或亲戚的结婚纪念日。在这种情况下,默认的Excel排序功能不起作用,因为它总是考虑年份,即使单元格格式仅显示月份或月份和日期。
解决办法是添加一个辅助列,提取月份,并按该列排序。要从日期中获取月份,请使用MONTH函数。
在下面的示例中,我们使用以下公式从B2中提取日期的月份:
=MONTH(B2)
注意:如果结果显示为日期而不是数字,请将一般格式设置为公式单元格。
步骤1: 现在,按照月份 列对表格进行排序。
步骤2: 选择月份数字(C2:C8),点击排序和筛选 ,选择从小到大排序 ,然后在Excel要求你这样做时扩展选择。如果所有步骤都正确完成,您将获得以下结果:
数据现在按月份排序,忽略每个月内的年份和日期。
如何按月份和日期排序生日
在安排生日日历的日期时,最佳解决方案是按月份和日期排序。因此,您需要一个可以从出生日期中提取月份和日期的公式。
在这种情况下,使用Excel的TEXT 函数,将日期转换为指定格式的文本字符串。对于我们的函数,”mmdd”或”mm.dd”格式代码会起作用。
在下面的示例中,我们通过使用以下公式从B2单元格中提取日期的月份和日期:
=TEXT(B2, "mm.dd")
接下来,从大到小排序月份和日期 列,然后您将按每个月的天数排列数据。
通过使用如下突出显示的DATE 公式,您可以达到相同的结果:
=DATE(2000, MONTH(B2),DAY(B2))
此公式通过从B2单元格中的实际日期中提取月份和日期,并用假日期的整个年份(此示例中为2000年)替换来生成日期列表。
其思路是让所有日期具有相同的年份,然后对日期列表按照时间顺序进行排序。由于年份相同,日期将按照月份和日期进行排序,与上述结果完全相同。
如何按照星期几排序
要按照星期几排序数据,您需要一个辅助列。在这种情况下,使用WEEKDAY 公式返回与该周的日期对应的数字,然后按照辅助列进行排序。以从星期日(1)到星期六(7)开始的一周,可以使用以下公式。
=WEEKDAY(A2)
如果您的一周从星期一(1)到星期天(7)开始,您可以使用以下公式:
=WEEKDAY(A2, 2)
如果星期几的名称作为文本而不是日期输入,那么请使用自定义排序功能。
如何按月份/星期几的名称排序数据
如果您有一个按月份命名并格式化为仅显示月份而不是日期的列表。应用Excel的升序排序可能会有问题,因为它会按字母顺序排列月份的名称,而不是按从一月到十二月的月份顺序进行排序。在这种情况下,您需要使用自定义排序功能并按照以下步骤操作。
步骤1: 选择要按月份名称排序的记录。
步骤2: 点击Data 标签,进入Sort & Filter组,点击Sort 按钮。
步骤3: 在Sort 对话框中,按照以下步骤进行:
- 首先,选择继续使用当前选择,然后点击Sort
-
在column 下拉菜单中,选择包含月份名称的列。
- 在Sort On 下拉菜单中,选择Cell Values 。
- 在Order 下拉菜单中,选择Custom List 。
步骤4: 同样,它会显示一个自定义列表对话框,您可以根据您的工作表中月份的排列方式选择完整的月份名称(一月、二月、三月,…)或者简短的名称(Jan、Feb、Mar…)。
步骤5: 点击确定 两次,关闭两个对话框。
结果是,数据按照月份名称按照时间顺序排序,而不是按字母顺序排序。
同样地,要按照一周中的天的名称进行排序,请在“自定义列表”对话框中选择完整名称(星期日,星期一,星期二…)或简称(周日,周一,周二…)。
如何自动按日期排序
在Excel中,排序功能不是动态的。这意味着您需要每次更改数据时重新排序,并且每当添加新信息时也是如此。有两种方法可以实现这一点,即“宏”和“公式”。
1. 使用宏自动排序日期
每当工作表中的任何地方发生更改时,将执行此宏。
假设您的数据在A列到C列中,您希望按照列C中的日期进行排序。还假设第1行包含标题。如果您的记录在不同的列中,则进行以下调整:
- 将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
如果您正在使用一个包含大量信息的巨大工作表进行工作,那么只要在工作表中进行任何更改,重新排序都可能会带来麻烦。
在这种情况下,将宏的触发限制在发生在特定范围内的更改上是有意义的。下面的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
End Sub
注意:这些宏可以用于按任何数据类型进行自动排序,不仅仅是日期。我们的示例代码按升序排序。如果您想按降序排序,请将Order1:=xlAscending更改为Order1:=xlDescending。
2. 使用公式自动排序日期
假设您有一个日期列表,并希望它们在一个单独的列中以时间顺序自动排列,与原始列表并排。您可以使用以下数组公式来实现此目的:
=IFERROR(INDEX(A2:A10, MATCH(ROWS(A2:A2), COUNTIF(A2:A10, "<="&A2:A10), 0)), "")
A2:A10 是包含一些可能的新条目的原始(未排序)日期,其中包含一些空单元格。
在原始日期所在的列旁边的一个空单元格中输入公式,然后同时按下Ctrl + Shift + Enter键以完成。然后,向下拖动公式填充剩余单元格。
为了让新增的日期自动排序,请确保在所引用的范围中包含足够数量的空白单元格。
多级数据排序
当您有一个大型数据集时,可以使用多级数据排序。这意味着您可以根据一列中的值对数据集进行排序,然后再根据另一列中的值进行排序。
例如,假设您有如下所示的数据集,希望根据两个条件(例如国家和销售额)对这些数据进行排序。
在上面的例子中,我们首先按国家对数据进行排序,然后在每个国家内部,数据进一步按销售价值排序。
这使我们能够快速看到每个国家中哪些销售业绩良好,哪些业绩不佳。以下是按多列排序数据的步骤:
步骤1: 选择您要排序的整个数据集。
步骤2: 然后,点击数据 选项卡。
步骤3: 点击排序 图标。这将打开排序对话框。
步骤4: 在排序对话框中,确保选择“我的数据有标题”。如果您的数据没有标题,可以取消选择此选项。
步骤5: 在排序对话框中,进行以下选择:
- 在列 下拉菜单中,选择包含国家名称的列名。
- 在排序方式 下拉菜单中,选择单元格值 。
- 在顺序 下拉菜单中,选择从A到Z。
步骤 6: 点击添加级别 。这将添加另一个排序选项级别。
步骤 7: 在第二个排序级别中,进行以下选择:
- 在列 下,选择包含销售额的列名。
- 在排序方式 下,选择值 。
- 在顺序 下,选择从大到小。
步骤8: 点击确定 按钮。
这个排序将数据集按照国家和销售的标准,将国家按照A到Z的顺序进行排序,将销售按照从大到小的顺序进行排序。
注意:排序对话框有一个“复制级别”的功能。它可以快速复制所选的排序级别,然后您可以轻松修改它。这是一个好好知道的功能,在需要按照多个列进行排序时可能会节省您的时间。