2016-04-21 28 views
0

2つのシートを複数の条件で結合する関数の設定に問題があります。VLookupを使用した文の場合

私は、次のフライトの列で発生します:

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

私は私を必要とするので、私は(連結していることをオフVLOOKUP私は日付の範囲を探していますので、私は使用できない場合は(とすることはできません「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 

すべてのヘルプに感謝。ありがとう。


エラー#1 N/Aを取得

を列参照を変更!列参照をDからOに変更すると、値が使用できないというエラーが発生します。以下の説明では、セル参照は同じです(同じソースのdataValドロップダウン)。コメントで述べたように、私はO.

ます(Ctrl-Shiftキーを押しながら入力を使用して)式に列Dの1つの変更作ら前に、この式は完全に働いた!

= INDEX( 'フライティングスケジュールを' $ F $ 3 :INDEX( '飛行スケジュール!F:F、MATCH(1E + 99、'飛行スケジュール '!F:F))、MATCH(1、IF((A2> ='飛行スケジュール '!$ B $ 3:INDEX (フライトスケジュール> F:F)))(A2 < = 'フライトスケジュール'!$ C $ 3:INDEX( 'フライトスケジュール'!C:C 、MATCH(1E + 99、 '飛行スケジュール'!F:F)))(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 
+0

なぜ 'if' +理解していない' and'動作しません。 – findwindow

+0

私はあなたがそれがうまくいかないと言ったときにあなたを信じます。ポイントはなぜです。理由を説明するデータを投稿してください。 – findwindow

+0

私は大きなテーブルのためにこれをやっています。私が1つのセルだけを見ている場合、数式= IF(AND(D2 = Sheet2!A2、Sheet1!A2> = Sheet2!B2、Sheet1!A2 <= Sheet2!C2)、Sheet2!D2)は動作しますが、私はなぜ私はvlookupが必要と感じる範囲を見てください。私はサンプルワークブックを添付することはできませんか? – Nick

答えて

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

+1

++ニース 'Sheet2!$ B $ 2:INDEX(Sheet2!B:B、MATCH(1E + 99、Sheet2!D:D))' – Jeeped

+0

Sigh。私はそれの要点を理解するが、5分後、私はそれをすべて忘れる; _; – findwindow

+0

この式は美しく動作しています。 Dの代わりに列Oの値を一致させる必要があるため、D2からO2までの最終的な* 'D2 = Sheet2!$ A $ 2'の後に始まる最終的なインデックス一致の参照を変更しました。 DからOまでですが、私は#N/Aを得ています。式は、DをOに変更した以外は同じです。Sheet2の値は同じ場所にあり、同じ値ですが、唯一の違いはメインシートのルックアップ列がDからOに変わったことです。基本QAあなたは配列の数式やマッチ/インデックスのためにお勧めですか?ありがとう。 @Scott Craner – Nick

関連する問題