EXCEL:如果满足两个条件,则从表中返回一个值。一个是日期范围

时间:2015-07-30 16:22:02

标签: if-statement match vlookup

这是我的困境。我在一个表中有一列是空白的。填写它我需要在另一个表中查找用户ID,并从该表返回一个值,但是当且仅当第一个表中的日期落在第二个表中两列的日期范围内时。

  1. 在表2中查找用户ID
  2. 如果发现查找transdate trans日期必须落在或之间 placefromdt和placetodate
  3. 如果符合条件1和2,则返回适当的值
  4. 我试图张贴床单的图片,但我没有获得授权。这是一个缩写的外观

    UserID TransDate Place

    93696732A 12/01/2014
    99898585F 12/01/2014
    99898585F 11/01/2014
    91867459C 12/01/2014
    91867459C 11/01/2014
    91867459C 10/01/2014
    91867459C 09/01/2014
    91867459C 08/01/2014
    91867459C 07/01/2014

    userid      station placeid place    placefrmdt  placetodt
    
    E13332190   HW      105612  STJWCC   09/01/2014  02/28/2015
    A97059190   HW      105614  TCI      01/01/2014  12/31/9999
    A56586039   HW      105614  TCI      01/01/2014  12/31/9999
    C02409039   HW      107549  USCEFSGA 12/01/2014  01/31/2015
    C67974990   HW      107539  KH       05/01/2015  12/31/9999
    C99804409   HW      105612  STJWCC   01/01/2015  04/30/2015
    C59064990   HW      105611  SBFHG    08/01/2014  04/30/2015
    F09035309   HW      107540  LAC      07/01/2014  12/31/9999
    D49047905   HW      105612  STJWCC   10/01/2014  01/31/2015
    D13929089   HW      107549  USCEFSGA 09/01/2014  01/31/2015
    

1 个答案:

答案 0 :(得分:0)

这可以使用MATCH + INDEX作为数组函数来完成。 注意:在Excel中输入数组功能时,请勿在输入功能后按ENTER键。请按Ctrl + Shift + Enter,以便Excel知道将其视为数组函数。

给出以下Excel工作表:

Sheet 1

第1页

Sheet 2

Sheet 2中

Sheet1上的Place列的公式是

 =INDEX(Sheet2!A:F,MATCH(1,(Sheet2!A:A=A2)*(Sheet2!E:E<=B2)*(Sheet2!F:F>=B2),0),4)

要解决这个问题:

INDEX有3个参数。

第一个参数是您要从Sheet2中检索数据的表!A:F

第二个参数是行号,我们使用MATCH

计算

第三个参数是列号,4,对应于Sheet2中的Place列

MATCH有三个参数。

第一个参数是要匹配的值,在本例中为1

第二个参数是与之匹配的表,我们正在计算

第三个参数是匹配的匹配类型,在本例中为0,用于完全匹配。

对于MATCH的第二个参数,我们使用(Sheet2!A:A = A2)(Sheet2!E:E&lt; = B2)(Sheet2!F:F&gt; = B2)。逻辑翻译,这是所有单元的集合,其中列A = A2并且列E <= B2并且列F> = B2。这些单独的项中的每一个都将返回true / false,但是当您在Excel中使用true / false执行数学函数时,它会将true / false转换为1/0。因此对于所有三个条件都为真的行,这将返回1,其余行将返回0.因为我们提供1作为MATCH尝试匹配的值,这将返回所有三个的行号条件是真的。