単一のインデックス+Matchは機能しますが、if文では

単一のインデックス+Matchは機能しますが、if文では
=IF(
A4=INDEX(Sheet1!$B:$B, MATCH(A4, Sheet1!$C:$C, 0)), 
INDEX(Sheet1!$B:$B, MATCH(A4, Sheet1!$C:$C,0)),

    IF(A4=INDEX(Source1!$A:$A, MATCH(A4, Source1!$B:$B, 0)), 
    INDEX(Source1!$A:$A, MATCH(A4, Source1!$B:$B, 0)),

        IF(A4=INDEX(Source2!$A:$A, MATCH(A4, Source2!$B:$B, 0)), 
        INDEX(Source2!$A:$A, MATCH(A4, Source2!$B:$B, 0)),

            IF(A4=INDEX(Source3!$A:$A, MATCH(A4, Source3!$B:$B, 0)), 
            INDEX(Source3!$A:$A, MATCH(A4, Source3!$B:$B, 0)))
)))

みなさん、こんにちは!ここでは、4 つの異なるスプレッドシートがあり、セル A4 の値を検索して、4 つのソース スプレッドシートすべてで正しい値が返されるようにします。

これを試してみると、うまくいきます:

INDEX(Sheet1!$B:$B, MATCH(A4, Sheet1!$C:$C,0))

しかし、これは以下のような単純な if ステートメントやネストされた if ステートメントでは機能しません。どこが間違っているのか全くわかりません。

=IF(INDEX(Sheet1!$B:$B, MATCH(A4, Sheet1!$C:$C, 0))=A4,
    INDEX(Sheet1!$B:$B, MATCH(A4, Sheet1!$C:$C, 0)),
    "NO")

これでは、すべてのセルが「NO」を返しますが、これは誤った値です。これを確認して、どこが間違っているのか教えてください。ご協力とご協力をお願いいたします。

答え1

A4 が見つからない場合はエラーが返され、独自のエラーを作成せずにエラーと等しくすることはできません。

代わりにこれを使用してください:

=IF(
ISNUMBER(MATCH(A4, Sheet1!$C:$C, 0)), 
INDEX(Sheet1!$B:$B, MATCH(A4, Sheet1!$C:$C,0)),

    IF(ISNUMBER(MATCH(A4, Source1!$B:$B, 0)), 
    INDEX(Source1!$A:$A, MATCH(A4, Source1!$B:$B, 0)),

        IF(ISNUMBER(MATCH(A4, Source2!$B:$B, 0)), 
        INDEX(Source2!$A:$A, MATCH(A4, Source2!$B:$B, 0)),

            IF(ISNUMBER(MATCH(A4, Source3!$B:$B, 0)), 
            INDEX(Source3!$A:$A, MATCH(A4, Source3!$B:$B, 0)))
)))

関連情報