0

如何在excel表格中根据生日排列列表?

SLno 姓名 rollnumber 生日
______________________________________
1 aaa 8 月 25 日 45 日
2 ddfg 87 4 月 2 日
3 poiu 98 年 1 月 4 日

在上表中,我需要根据生日列更新列表吗?预期的o / p:

SLno 姓名 rollnumber 生日
______________________________________
1 月 98 日 1 月 4 日
2 ddfg 87 4 月 2 日
3 月 45 日 8 月 25 日
4

4 回答 4

2

使用@chrisneilsen 给出的帮助列想法,帮助列的不同公式将是:

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

这将删除您拥有的日期的最后 2 个字母(因为 Excel 不理解序数),并通过将“, 2012”附加到该新文本并读取日期将其转换为日期。

于 2012-09-12T13:18:09.550 回答
2

最好的选择是使用DateSerial数字作为生日,格式化为你想要的显示。

如果你不能转换,试试这个

添加一个带有公式的辅助列,以将生日转换为 aDateSerial并对该列进行排序

公式(假设生日在列中D):

=DATEVALUE(MID(D2,FIND(" ",D2)+1,LEN(D2)-FIND(" ",D2)-2)&" "&LEFT(D2,FIND(" ",D2)-1)&" 1900")
于 2012-09-12T10:24:31.003 回答
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

然后,您可以按日期对其进行排序。

于 2012-09-12T13:11:36.883 回答
1

我同意,您需要有一列具有正确格式的日期才能进行排序。

但是,您可以使用我在另一个网站上找到的这个漂亮的公式来使用您喜欢的视觉格式的第二列,以按照您想要的方式重新格式化您的日期。我更改了原件以匹配您的格式。

=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")
于 2012-09-12T16:18:26.607 回答