在Excel中找到最早的日期

时间:2013-05-29 03:53:02

标签: excel

我想找到DOB OF FATHER& DOB之间的最早日期。在Sheet1中,通过匹配员工代码并在表2中具有最早日期值来计算母亲的责任。

第1页

Employee Code   DOB OF FATHER      DOB OF MOTHER
28883               29/12/1987      28/01/1988
83933               19/11/1988      12/07/1988
55428               21/01/1938      03/10/1938
99999               18/03/1982      11/02/1980

第2页

Employee Code   Earliest Date
28883   
99999   
83933   
55428   

2 个答案:

答案 0 :(得分:1)

Sheet1:
        A       B            C
    1   Code    FatherDOB    MotherDOB
    2   28883   29/12/1987   28/01/1988
    3   83933   19/11/1988   12/07/1988
    4   55428   21/01/1938   03/10/1938
    5   99999   18/03/1982   11/02/1980

Sheet2:
        A       B
    1   Code    EarliestDOB
    2   28883   29/12/1987
    3   99999   11/02/1980
    4   83933   12/07/1988
    5   55428   21/01/1938

您可以将两个vlookup操作与min操作结合使用:

=MIN(VLOOKUP(A2,Sheet1!$A$2:$C$5,2,FALSE),VLOOKUP(A2,Sheet1!$A$2:$C$5,3,FALSE))

第一个vlookup为您提供父亲的出生日期(使用整个表范围,但提取第二列),第二个给出母亲的出生日期(提取第三个)列)。

最早的只是两者中的最小值。


如果某些日期可能为空,则最简单的解决方案可能是在工作表1上设置D列以评估最早的日期,忽略空白。例如D2将具有(为了便于阅读而分隔行):

=IF(ISBLANK(B2),
    B3,
    IF(ISBLANK(C2),
       B2,
       MIN(VLOOKUP(A2,$A$2:$C$5,2,FALSE),
           VLOOKUP(A2,$A$2:$C$5,3,FALSE))))

如果其中一个单元格为空白,则使用另一个单元格,否则选择最早的单元格。

然后,您只需在表2的公式中查找新列DB2的示例):

=VLOOKUP(A2,Sheet1!$A$2:$D$5,4,FALSE)

答案 1 :(得分:0)

我想指出一个永远存在于Excel中的限制。

Excel内部无法正确处理3/1/1900(1900年3月1日)之前的日期。

  • 它认为1900年是闰年
  • ,即2009年3月1日前一天是2/29/1900
  • 如果您在18/31/1899和2/28/1899之间的任何日期通过自动化输入Excel,它会认为是1/1/1900 - 2/29/1900
  • 如果你试图通过自动化12/30/1899,它会认为它是1899年1月0日。
  • 如果您尝试在1899年12月30日之前的任何日期传递它,则会抛出错误

您可以通过自动化传递给Excel的各种示例日期:

Date     Excel
-------- ------------------------------
18651001 throws error going into Excel
18991201 throws error going into Excel
18991229 throws error going into Excel

18991230 shows as "12:00:00" in Excel; it refuses to show a date portion

18991231    shows in Excel as 1/1/1900
19000101    shows in Excel as 1/2/1900
19000102    shows in Excel as 1/3/1900
19000103    shows in Excel as 1/4/1900
19000201    shows in Excel as 2/2/1900
19000228    shows in Excel as 2/29/1900
19000229    Feb 29 1900 was not a real date; Excel takes it

19000301    shows in Excel as 3/1/1900
19000601    shows in Excel as 6/1/1900
19001231    shows in Excel as 12/31/1900
19010101    shows in Excel as 1/1/1901
20151128    shows in Excel as 11/28/2015

VARIANT structure does dictate that a date must be after December 30, 1899 midnight as time zero

  

2.2.25 DATE

     

DATE是一种指定日期和时间信息的类型。它表示为一个8字节的浮点数。

     

此类型声明如下:

typedef double DATE;
     

日期信息以整数增量表示,从1899年12月30日午夜开始,为零时间。时间信息由自前一个午夜以来的一天的分数表示。例如,上午6点。在1900年1月4日,将代表值5.25(1899年12月30日过去的5天和1/4)。

tl; dr:如果您在1900年3月1日之前在Excel中有任何日期(例如,活着的最老女人的出生日期),Excel将无法正确执行数学运算。

如果您希望在3/1/1900之前显示任何日期,则应显示为文字,而不是实际日期。

Stackoverflow是wiki和reddit的组合。我在这里添加有用的相关信息。任何试图在范围内找到最小日期的人都需要了解Excel中的此限制。