如果声明与VLookup

时间:2016-04-21 21:32:48

标签: excel if-statement vlookup

我在设置一个以多个条件连接我的两张纸的功能时遇到了问题。

我希望在飞行列中发生以下情况:

IF sheet1.product = sheet2.product AND
sheet1.date >= sheet2.start date AND
sheet1.date <= sheet2.end date THEN
sheet2.flight

我无法连接和vlookup,因为我正在寻找一系列日期,我不能使用if(和(因为我需要我的&#39; value_if_true&#39;是动态的。

达到我试图解释的最佳方案是什么?

Sheet1
For flight column row 1
=IF(AND(D2=Sheet2!A2,Sheet1!A2>=Sheet2!B2,Sheet1!A2<=Sheet2!C2),Sheet2!D2)

Date    Start Date  End Date    product      flight
11/29/2015  11/29/2015  12/5/2015   product1    1
11/29/2015  11/29/2015  12/5/2015   product1    
11/30/2015  11/29/2015  12/5/2015   product1    
11/30/2015  11/29/2015  12/5/2015   product1    
12/1/2015   11/29/2015  12/5/2015   product1    
12/1/2015   11/29/2015  12/5/2015   product1    
12/2/2015   11/29/2015  12/5/2015   product1    
12/3/2015   11/29/2015  12/5/2015   product1    
12/3/2015   11/29/2015  12/5/2015   product1    
12/4/2015   11/29/2015  12/5/2015   product1    
12/5/2015   11/29/2015  12/5/2015   product1    
11/25/2015  11/29/2015  12/5/2015   product2    
11/26/2015  11/29/2015  12/5/2015   product2    
11/27/2015  11/29/2015  12/5/2015   product2    
11/29/2015  11/29/2015  12/5/2015   product2    
11/29/2015  11/29/2015  12/5/2015   product2    
11/30/2015  11/29/2015  12/5/2015   product2    
11/30/2015  11/29/2015  12/5/2015   product2    
12/1/2015   11/29/2015  12/5/2015   product2    
12/1/2015   11/29/2015  12/5/2015   product2    
12/2/2015   11/29/2015  12/5/2015   product2    
12/2/2015   11/29/2015  12/5/2015   product2    
12/3/2015   11/29/2015  12/5/2015   product2    
12/3/2015   11/29/2015  12/5/2015   product2    
12/4/2015   11/29/2015  12/5/2015   product2    
12/4/2015   11/29/2015  12/5/2015   product2    
12/5/2015   11/29/2015  12/5/2015   product2    
12/6/2015   11/29/2015  12/5/2015   product2    

Sheet2
product   start date    end date    flight
product1    11/29/2015  12/1/2015   1
product1    12/2/2015   12/5/2015   2
product2    11/25/2015  11/30/2015  1
product2    12/1/2015   12/2/2015   2
product2    12/3/2015   12/6/2015   3

任何帮助非常感谢。谢谢。

更改列参考时出错

获得#N / A!当我将列引用从D更改为O时,值不可用错误。下面的单元格引用是相同的(dataVal下拉列表,具有相同的源)数据,以说明。正如评论中所提到的,在我将D列的一次更改为O之前,此公式运行良好。

公式(使用Ctrl-Shift-Enter):

= INDEX(&#39;航班时刻表&#39;!$ F $ 3:INDEX(&#39;航班时刻表&#39;!F:F,MATCH(1E + 99,&#39;航班时刻表&#39; ; F:F)),MATCH(1,IF((A2&gt; =&#39;飞行时间表&#39;!$ B $ 3:INDEX(&#39;飞行时间表&#39;!B:B,MATCH( 1E + 99,&#39;航班时刻表&#39;!F:F)))(A2 <=&#39;航班时刻表&#39;!$ C $ 3:INDEX(&#39;航班时刻表&# 39;!C:C,MATCH(1E + 99,&#39;飞行时间表&#39;!F:F)))(O2 =&#39;飞行时间表&#39;!$ A $ 3: INDEX(&#39;航班时刻表&#39;!A:A,MATCH(1E + 99,&#39;航班时刻表&#39;!F:F))),1,0),0))

这是活动表上的数据:

Date    ColB    ColC    Start Date   End Date   ColF    ColG    ColH    Coli        ColJ    ColK    ColL    ColM    flight  Product
11/29/2015  Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-11 1   1524    #REF!   ProductA
11/29/2015  Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-11 691 2046191 #REF!   ProductA
11/30/2015  Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-11 3   1906    #REF!   ProductA
11/30/2015  Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-11 1152    2923570 #REF!   ProductA
12/1/2015   Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-12 2   3   #REF!   ProductA
12/1/2015   Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-12 0   49  #REF!   ProductA
12/2/2015   Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-12 0   2   #REF!   ProductA
12/3/2015   Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-12 0   433 #REF!   ProductA
12/3/2015   Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-12 642 2002431 #REF!   ProductA
12/4/2015   Emp Loc 11/29/2015  12/5/2015   Type    ZZZ dim dim 4850000     2015-12 2   24  #REF!   ProductA

这是&#39;航班时刻表&#39;

的数据
Product  start date  end date       Budget      Rate Flight
ProductA    11/29/2015  11/30/2015  $10,000.00  $5.00   1
ProductA    12/01/2015  12/03/2015  $10,000.00  $5.00   2
ProductA    12/04/2016  12/06/14    $10,000.00  $5.00   3

1 个答案:

答案 0 :(得分:3)

你想要的是一个数组公式:

=INDEX(Sheet2!$D$2:INDEX(Sheet2!D:D,MATCH(1E+99,Sheet2!D:D)),MATCH(1,IF((A2>=Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH(1E+99,Sheet2!D:D)))*(A2<=Sheet2!$C$2:INDEX(Sheet2!C:C,MATCH(1E+99,Sheet2!D:D)))*(D2=Sheet2!$A$2:INDEX(Sheet2!A:A,MATCH(1E+99,Sheet2!D:D))),1,0),0))

作为数组公式,在完成编辑公式而不是Enter或Tab时必须使用Ctrl-Shift-Enter。如果操作正确,Excel会将{}放在公式周围。

数组公式计算是指数式的,因此我们希望将公式限制为数据范围。这就是所有INDEX(Sheet2!D:D,MATCH(1E+99,Sheet2!D:D))正在做的事情。他们找到D列中具有数字的最后一个单元格,并自动将其设置为底部参考。因此,当工作表2上的表增长或收缩时,参考也是如此,只使用必要的计算。

enter image description here