MS Excel 2010 から MS Excel 2003 に数式を変換しますか?

MS Excel 2010 から MS Excel 2003 に数式を変換しますか?

Excel 2010 で使用している式は次のとおりです。

=_xlfn.IFERROR(INDEX(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1),INDEX(K$76:K$2044,MATCH(Q23,L$76:L$2044,0),1))

しかし、Excel 2003 に変換する必要があります。次のことがわかりました。

_xlfn.IFERROR

なる

_IF(ISERROR)

したがって、Excel 2003 では数式は次のようになります。

=IF(ISERROR(INDEX(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1),INDEX(K$76:K$2044,MATCH(Q23,L$76:L$2044,0),1)))

しかし、2003 では議論が多すぎて処理できません。式を短くしたり、簡略化したりするのを手伝ってくれる人はいませんか?

答え1

ロジックを正しく理解していれば、次の操作を実行したいのだと思います。P76:2044 で Q23 を検索します。Q23 が存在する場合は、その位置に基づいて K からインデックスを作成します。存在しない場合は、L76:2044 との一致に基づいて K からインデックスを作成します (一致が存在することを信頼します)。

それが正しい場合は、次のように、エラー トラップを INDEX ではなく MATCH 関数に移動します。

=INDEX(K$76:K$2044, IF(ISERROR(MATCH(Q23,P$76:P$2044,0)), MATCH(Q23,L$76:L$2044,0), MATCH(Q23,P$76:P$2044,0)) ,1)

(少しわかりやすくするために、スペースをいくつか追加しました)。これにより、デバッグが容易になり、2 と 2 ではなく、2 つの一致と 1 つのインデックスのみを実行するため、計算がより効率的になる可能性があります (インデックスはかなり効率的ですが)。

インデックスの配列は単一の列なので、最後の「,1」を省略できますが、個人的には、最初の列から確実に値を取得していることが明確にわかる点が気に入っています。

ちなみに、Q23 が L にも P にも見つからない場合、これはやはり破綻します。データセットではそのようなことは起こらないかもしれませんが、注意してください。

答え2

ISERROR 関数を閉じる括弧が抜けており、エラーがない場合に何が必要かを指定していません。おそらく、最初のインデックス検索を繰り返しているのでしょう:-

=IF(ISERROR(INDEX(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1)),INDEX(K$76:K$2044,MATCH(Q23,L$76:L$2044,0),1)),INDEX(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1))

関連情報