2012-09-12 241 views
0

如何根據生日在excel表中安排一個列表?根據生日對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 
+2

在生日欄中使用真實日期(不是文本),Excel會在一次點擊中爲您排序。 – assylias

回答

2

最佳選擇是使用DateSerial號的生日,格式設置爲顯示你想要的。

如果不能轉換,試試這個

添加輔助柱,用公式來生日轉換爲DateSerial和排序在該列

式(假設生日在D列):

=DATEVALUE(MID(D2,FIND(" ",D2)+1,LEN(D2)-FIND(" ",D2)-2)&" "&LEFT(D2,FIND(" ",D2)-1)&" 1900") 
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 

然後,您可以按日期對其進行排序。

2

使用助手列想法@chrisneilsen了,對於助手列不同的公式是:

=DATEVALUE(LEFT(D2,LEN(D2)-2)&", 2012") 

這需要最後兩個字母關你的日期(如Excel不明白序) ,並通過在該新文本上附加「,2012」並讀取日期,將其轉換爲日期。

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") 
相關問題