0

我想通过匹配员工代码并在表 2 中具有最早日期的值来找到表 1 中父亲出生日期和母亲出生日期之间的最早日期。

表 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   
4

2 回答 2

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 的公式中查找该新列D(例如B2):

=VLOOKUP(A2,Sheet1!$A$2:$D$5,4,FALSE)
于 2013-05-29T04:03:02.680 回答
0

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

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

  • 它认为 1900 年是闰年
  • 1900 年 3 月 1 日的前一天是 1900 年 2 月 29 日
  • 如果您在 1899 年 12 月 31 日到 1899 年 2 月 28 日之间的任何日期通过自动化输入通过 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 结构确实规定日期必须在 1899 年 12 月 30 日午夜之后作为时间零:

2.2.25 日期

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

该类型声明如下:

typedef double DATE;

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

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

如果您希望显示 1900 年 3 月 1 日之前的任何日期,则应显示为text,而不是实际日期。

任何试图在某个范围内查找最小日期的人都需要了解 Excel 中的这一限制。

于 2017-05-30T14:51:54.183 回答