Excel 带VLookup的If语句

Excel 带VLookup的If语句,excel,if-statement,vlookup,Excel,If Statement,Vlookup,我在设置一个函数时遇到问题,该函数将我的两个工作表按多个条件连接起来 我希望航班栏中出现以下情况: IF sheet1.product = sheet2.product AND sheet1.date >= sheet2.start date AND sheet1.date <= sheet2.end date THEN sheet2.flight 这是“航班时刻表”上的数据 Product start date end date Budget Rate

我在设置一个函数时遇到问题,该函数将我的两个工作表按多个条件连接起来

我希望航班栏中出现以下情况:

IF sheet1.product = sheet2.product AND
sheet1.date >= sheet2.start date AND
sheet1.date <= sheet2.end date THEN
sheet2.flight
这是“航班时刻表”上的数据

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

您需要的是一个数组公式,然后:

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

=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您需要的是一个数组公式,然后:

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


=INDEX(Sheet2!$D$2:INDEX(Sheet2!D:D,匹配(1E+99,Sheet2!D:D)),匹配(1,如果((A2>=Sheet2!$B$2:INDEX(Sheet2!B:B,匹配(1E+99,Sheet2!D:D)))*(我不明白为什么
如果
+
不起作用。我相信你说它不起作用。关键是为什么。发布一些数据解释为什么。我是针对一个大表这样做的。公式=如果(和(D2=Sheet2!A2,Sheet1!A2>=Sheet2!B2,Sheet1!A2最好以文本形式发布数据,但如果需要,图片也可以。@findwindow当你试图召唤我时,你需要在没有空格的情况下使用我的名字,否则它不会向我发送消息。但请看下面。不明白为什么
如果
+
不起作用。我相信你说的话工作。重点是为什么。发布一些数据来解释原因。我是针对一个大表这样做的。公式=IF(AND)(D2=Sheet2!A2,Sheet1!A2>=Sheet2!B2,Sheet1!A2最好以文本形式发布数据,但如果需要,图片也可以。@findwindow当你试图召唤我时,你需要在没有空格的情况下使用我的名字,否则它不会向我发送消息。但请参见下文。++Nice
Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH(1E+99,Sheet2!D:D))
叹气。我理解了它的要点,但5分钟后,我完全忘记了;这个公式一直运行得很好。我将最终索引匹配中的引用从“D2=Sheet2!$A$2”结尾处开始,从D2改为O2,因为我需要匹配O列中的值,而不是D列中的值。很简单,只需将D列改为O列,但我得到了g#N/A。除了我将D更改为O之外,公式是相同的。表2中的值位于相同的位置,并且是相同的值。唯一的区别是主表上的查找列已从D更改为O。您对数组公式或匹配/索引有什么基本的QA建议吗?谢谢。@ScottCraner@Nick你还记得Ctr吗编辑公式后使用l-Shift-Enter键?我正在使用Ctrl-Shift-Enter键。问题必须在更上游的某个地方,我将继续剖析。谢谢(++Nice
Sheet2!$B$2:INDEX(Sheet2!B:B,匹配(1E+99,Sheet2!D:D))
叹气。我理解了它的要点,但5分钟后,我完全忘记了;这个公式一直运行得很好。我将最终索引匹配中的引用从“D2=Sheet2!$A$2”结尾处开始,从D2改为O2,因为我需要匹配O列中的值,而不是D列中的值。很简单,只需将D列改为O列,但我得到了g#N/A。除了我将D更改为O之外,公式是相同的。表2中的值位于相同的位置,并且是相同的值。唯一的区别是主表上的查找列已从D更改为O。您对数组公式或匹配/索引有什么基本的QA建议吗?谢谢。@ScottCraner@Nick你还记得Ctr吗编辑公式后使用l-Shift-Enter?我正在使用Ctrl-Shift-Enter。问题必须在更上游的某个地方,我将继续剖析。谢谢。
=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))