Note: The other languages of the website are Google-translated. Back to English

在Excel中输入或更改日期后,如何自动对日期进行排序? 

在Excel中, 排序 函数可以帮助您根据需要以升序或降序对日期进行排序。 但这不是动态的,如果您对日期进行了排序,然后向其添加了新日期,则需要再次对其进行排序。 在工作表中每次输入新日期时,是否有任何好的快速方法可以自动对日期进行排序?

使用公式输入或更改日期时自动排序日期

使用VBA代码输入或更改日期时自动排序日期


箭头蓝色右气泡 使用公式输入或更改日期时自动排序日期

例如,A列中的原始日期,以下公式可帮助您根据要排序的列自动对新助手列中的日期或任何其他文本字符串进行排序,请执行以下操作:

1。 输入以下公式:

=INDEX($A$2:$A$15,MATCH(ROWS($A$2:A2),COUNTIF($A$2:$A$15,"<="&$A$2:$A$15),0)) 放入日期列旁边的空白单元格中, C2,例如,然后按 Ctrl + Shift + Enter 键,您将获得一个数字序列,然后将填充手柄向下拖动到要使用的单元格,请参见屏幕截图:

备注:在上式中: A2:A15 是您要自动排序的原始日期范围。

doc按日期自动排序1

2. 然后通过单击将数字格式化为日期格式 短期约会 来自 一般 下的下拉列表 公司首页 标签,请参见屏幕截图:

doc按日期自动排序2

3。 然后,序列号已转换为日期格式,并且原始日期也已排序,请参见屏幕截图:

doc按日期自动排序3

4。 从现在开始,当您输入新日期或更改A列中的日期时,C列中的日期将自动按升序排序,请参见屏幕截图:

doc按日期自动排序4


箭头蓝色右气泡 使用VBA代码输入或更改日期时自动排序日期

当您输入新日期或根据需要更改日期时,以下VBA代码可以帮助您自动对原始列中的日期进行排序。

1。 输入或更改日期时,转到要自动对日期进行排序的工作表。

2。 右键单击工作表标签,然后选择 查看代码 从上下文菜单中,弹出 Microsoft Visual Basic应用程序 窗口,请复制以下代码并将其粘贴到空白处 模块 窗口,请参见屏幕截图:

VBA代码:输入或更改日期时自动排序:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    On Error Resume Next
    If Application.Intersect(Target, Application.Columns(1)) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
                                        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

doc按日期自动排序6

备注:在上面的代码中,输入的日期将在A列中自动排序,您可以更改 A1A2 放到自己需要的单元格中。

3。 从现在开始,当您在A列中输入日期时,该日期将自动升序排序。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (15)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
你忘了说公式是数组,你需要ctrl+Shift+回车。 幸运的是你有截图,否则你的页面会浪费网络空间
该评论由网站上的主持人最小化
如果列表中有重复的日期怎么办? 我希望这两个数字都出现。
该评论由网站上的主持人最小化
你好,瑞安,

要使用重复的日期对日期进行排序,您应该应用以下公式:

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

请记住同时按 Shift + Ctrl + Enter 键。

希望对你有帮助,谢谢!
查看附件 (1 / 5)
该评论由网站上的主持人最小化
太棒了:)工作正常
该评论由网站上的主持人最小化
如何进行相同的排序计算,但从最新日期到最旧日期? 目前它是从最旧到最新。 翻转 < 符号是不够的,除此之外,我对它的作用还不够深刻。 另外我认为可能发生的事情是excel自动从上到下工作,造成困难。
该评论由网站上的主持人最小化
你好,博,

要将日期从最新到最旧自动排序,您只需将上述公式中的 <= 更改为 >=,如下所示:
=INDEX($A$2:$A$15,MATCH(ROWS($A$2:A2),COUNTIF($A$2:$A$15,">="&$A$2:$A$15),0))
插入此公式后,请记住同时按 Ctrl + Shift + Enter 键以获得正确的结果。
请尝试一下。
该评论由网站上的主持人最小化
除了重复的日期之外,还有没有办法在排序时包含多列数据? 我需要它包含多个列并将它们与到期日期一起排序。
该评论由网站上的主持人最小化
我做了一个支票簿登记,它可以工作,但我想弄清楚如何让我的条目进入日期顺序。 任何帮助,将不胜感激。 我还在学习excel。
该评论由网站上的主持人最小化
是否有特定的公式可以使单元格保持在排序日期之后? 最好按日期组织,但保留整行信息。 任何帮助将非常感激。
该评论由网站上的主持人最小化
使用 VBA 代码,我复制并粘贴了上面的内容,但希望 F 列中的日期是数据排序所依据的值。 我已将范围值更改为 F2 和 F3500(第 1 行是标题的电子表格的大小),但它仍然按 A 列中的日期排序。有人可以帮我吗?
该评论由网站上的主持人最小化
你好,罗斯,
将代码应用于 F 列时,您应该将一些引用更改为您需要的代码,如下所示:
私人子Worksheet_Change(按目标的ByVal目标)
'更新通过 Extendoffice 20160606
出错时继续下一步
如果 Application.Intersect(Target, Application.Columns(6)) 什么都不是,则退出 Sub
如果 Target.Count > 1 则退出 Sub
Range("F1").Sort Key1:=Range("F2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, 方向:=xlTopToBottom
END SUB

请尝试,希望对您有所帮助!
该评论由网站上的主持人最小化
该VBA代码是纯金! 谢谢! :-)
该评论由网站上的主持人最小化
您好,如果我想对多个列执行此操作,甚至在同一列中有新的起点怎么办? 我只是在同一个窗口中休息并重新复制 VBA 代码吗?
感谢。
该评论由网站上的主持人最小化
您好,这是一个很棒的工具。 谢谢你。 如何将此应用于同一选项卡中的多个列? 我可以将它应用于在同一列的新单元格中重新按日期排序吗? 我可以将 VBA 代码重新粘贴到同一个窗口中吗?
感谢。
该评论由网站上的主持人最小化
你好,Noname9,你好吗? 通过使用 VBA 代码来实现您的目标是我无法企及的。 但我确实知道如何使用公式来解决问题。假设我们有两列日期,比如 A2:B7。 如何将这些日期排序到新列中? 请执行以下操作。
首先,我们需要将两列日期合并为一列。 复制并粘贴公式 =INDEX($A$2:$B$7,INT((ROWS(D$2:D2)-1)/2)+1,MOD(ROWS(D$2:D2)-1,2)+ 1) 进入单元格 D2。 并向下拖动填充手柄以组合所有日期。 请看截图1。
然后,我们将对合并的日期进行排序。 复制并粘贴公式 =INDEX($D$2:$D$13,MATCH(ROWS($D$2:D2),COUNTIF($D$2:$D$13,"<="&$D$2:$D$13) ,0)) 进入 F2。 并向下拖动填充手柄以对所有日期进行排序。 请看截图2。
希望它会有所帮助。 祝你有美好的一天。真诚的,曼迪
查看附件 (2 / 5)
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护