如何根据excel表中的生日安排列表?
SLno Name rollnumber birthday ______________________________________ 1 aaa 45 august 25th 2 ddfg 87 april 2nd 3 poiu 98 january 4th
在上表中我需要根据生日列更新列表吗? 预期o / p:
SLno Name rollnumber birthday ______________________________________ 1 poiu 98 january 4th 2 ddfg 87 april 2nd 3 aaa 45 august 25th
答案 0 :(得分:2)
最佳选择是为生日使用DateSerial
个数字,格式化为您想要的显示。
如果您无法转换,请尝试此
添加一个带有公式的帮助列,将生日转换为DateSerial
并对该列进行排序
公式(假设生日在列D
中):
=DATEVALUE(MID(D2,FIND(" ",D2)+1,LEN(D2)-FIND(" ",D2)-2)&" "&LEFT(D2,FIND(" ",D2)-1)&" 1900")
答案 1 :(得分:2)
使用@chrisneilsen给出的辅助列概念,辅助列的不同公式为:
=DATEVALUE(LEFT(D2,LEN(D2)-2)&", 2012")
这将取消您日期的最后2个字母(因为Excel不理解序数),并通过将“,2012”附加到该新文本并阅读日期来将其转换为日期。
答案 2 :(得分:1)
如果您有大量数据,可以使用这样的脚本将日期格式转换为数字。我假设您的样本中的生日在D列,如果没有,那么只需在下面更改。
Option Explicit
Sub ChangeFormat()
With Columns("D").Cells
.Replace What:="January", Replacement:="01", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:=" ", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="th", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="nd", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="st", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="rd", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
End Sub
然后您可以按日期对其进行排序。
答案 3 :(得分:1)
我同意,您需要有一列格式正确的日期才能启用排序。
但是,您可以使用我在another site上找到的这个漂亮的公式,使用您喜欢的视觉格式制作第二列,以便根据您的需要重新格式化日期。我更改了原件以匹配您的格式。
=LOWER(TEXT(A1,"mmmm d"))&LOOKUP(DAY(A1),{1,2,3,4,21,22,23,24,31;"st","nd","rd","th","st","nd","rd","th","st"}) &TEXT(A1,", yyyy")