2016-09-14 6 views
0

4枚のブックがあります。最初のシートで、次のシートの列の値をチェックする関数を作成しようとしています。値がそこに見つからない場合は、次のシートの同様の列を探します。私は以下の機能を持っていて、シートDummy1とDummy2を見るときには動作しますが、Dummy3を見ると#N/Aを返します。これがなぜ起こっているのか?Excel:ネストされたIFとINDEX MATCH戻り値#N/A

=IF(INDEX(Dummy1!$A$3:$A$1048576,MATCH(B1,Dummy1!$B$3:$B$2473,0))<>0, 
INDEX(Dummy1!$A$3:$A$1048576,MATCH(B1,Dummy1!$B$3:$B$2473,0)), 
IF(INDEX(Dummy2!$A$3:$A$1048576,MATCH(B1,Dummy2!$B$3:$B$2473,0))<>0, 
INDEX(Dummy2!$A$3:$A$1048576,MATCH(B1,Dummy2!$B$3:$B$2473,0)), 
INDEX(Dummy3!$A$3:$A$1048576,MATCH(B1,Dummy3!$B$3:$B$2473,0)))) 
+0

それはそれはすべての3枚のダミーシートで見つけることができないことを意味? – Rosetta

+0

もしそれが間違いなくDummy3にあるのであれば、それはテキストとしてフォーマットされた数字ですが、B1は実際の数字ですか? –

答えて

0

一致式が一致しない場合、たとえばDummy1の場合は#N/Aを返します。これは、falseを返し、Dummy2を見続けるのではなく、if関数を中止します。

エラーの場合にfalseを返すiferror関数内で論理テストをラップしようとします。 But be mindful of using it too generously

=IF(IFERROR(INDEX(Dummy1!$A$3:$A$1048576,MATCH(B1,Dummy1!$B$3:$B$2473,0))<>0,FALSE), 
INDEX(Dummy1!$A$3:$A$1048576,MATCH(B1,Dummy1!$B$3:$B$2473,0)), 
IF(IFERROR(INDEX(Dummy2!$A$3:$A$1048576,MATCH(B1,Dummy2!$B$3:$B$2473,0))<>0,FALSE), 
INDEX(Dummy2!$A$3:$A$1048576,MATCH(B1,Dummy2!$B$3:$B$2473,0)), 
INDEX(Dummy3!$A$3:$A$1048576,MATCH(B1,Dummy3!$B$3:$B$2473,0)))) 
0

できていない、あなたの数式での取り扱いエラー - これはそれを行います。

=IF(TRIM($B$2)="","Please enter value into B2",IFERROR(IF(INDEX(Dummy1!$A:$A,MATCH($B$2,Dummy1!$B:$B,0),1)<>0,INDEX(Dummy1!$A:$A,MATCH($B$2,Dummy1!$B:$B,0),1),IF(INDEX(Dummy2!$A:$A,MATCH($B$2,Dummy2!$B:$B,0),1)<>0,INDEX(Dummy2!$A:$A,MATCH($B$2,Dummy2!$B:$B,0),1),IF(INDEX(Dummy3!$A:$A,MATCH($B$2,Dummy3!$B:$B,0),1)<>0,INDEX(Dummy3!$A:$A,MATCH($B$2,Dummy3!$B:$B,0),1),"Not in any of the sheets"))),"Not in any of the sheets")) 
関連する問題