【问题标题】:If statement with VLookup带有 VLookup 的 If 语句
【发布时间】:2016-08-15 07:41:05
【问题描述】:

我在设置一个根据多个条件连接我的两张工作表的函数时遇到问题。

我希望在航班列中发生以下情况:

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

我无法连接和查看它,因为我正在寻找一系列日期并且我不能使用 if(and( 因为我需要我的 'value_if_true' 是动态的。

实现我试图解释的最佳公式是什么?

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 时出现 value not available 错误。单元格引用是相同的(dataVal 下拉列表具有相同的源)下面的数据来说明。如 cmets 中所述,在我将 D 列更改为 O 之前,此公式完美运行。

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

=INDEX('航班时刻表'!$F$3:INDEX('航班时刻表'!F:F,MATCH(1E+99,'航班时刻表'!F:F)),MATCH(1,IF(( A2>='航班时刻表'!$B$3:INDEX('航班时刻表'!B:B,MATCH(1E+99,'航班时刻表'!F:F)))(A2(O2='航班时刻表'!$A$3: INDEX('航班时刻表'!A:A,MATCH(1E+99,'航班时刻表'!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

这是“航班时刻表”的数据

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

【问题讨论】:

  • 不明白为什么if+and 不起作用。
  • 当你说它不起作用时,我相信你。重点是为什么。发布一些解释原因的数据。
  • 我正在为一张大桌子这样做。如果我只查看一个单元格,则公式 =IF(AND(D2=Sheet2!A2,Sheet1!A2>=Sheet2!B2,Sheet1!A2
  • 最好将数据作为文本发布,但如果需要,图片也可以。
  • @findwindow 当你试图召唤我时,你需要在没有空格的情况下填写我的名字,否则它不会向我发送消息。但见下文。

标签: excel if-statement vlookup


【解决方案1】:

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

=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))

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

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

【讨论】:

  • ++不错Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH(1E+99,Sheet2!D:D))
  • 叹息。我明白了它的要点,但 5 分钟后,我全忘了 ;_;
  • 这个公式效果很好。我将最终索引匹配中的引用从最终 * 'D2=Sheet2!$A$2' 从 D2 更改为 O2 之后开始,因为我需要匹配 O 列而不是 D 中的值......足够简单,只需更改列D到O,但我得到#N/A。除了我将 D 更改为 O 之外,公式是相同的。Sheet2 中的值位于相同的位置并且是相同的值,唯一的区别是主工作表上的查找列已从 D 更改为 O。是否有任何基本的 QA您推荐用于数组公式或匹配/索引?谢谢。 @斯科特·克兰纳
  • @Nick 你还记得编辑公式后的 Ctrl-Shift-Enter 吗?
  • 我正在使用 Ctrl-Shift-Enter。问题一定出在更上游的地方,我会继续剖析。谢谢。
猜你喜欢
  • 2021-12-20
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
相关资源
最近更新 更多