Excel Vlookup は参照行ではなく、reference_row-1 から値を返します。

Excel Vlookup は参照行ではなく、reference_row-1 から値を返します。

件名として、2 つの Excel ファイル間で vlookup を実行していますが、数式は(DPS DPC)from reference_row-1ではなく値 ("Room")を返しますreference_row。なぜこのようなことが起こるのでしょうか。また、どうすれば修正できるのでしょうか。

Excel vlookup がエラーを返す

答え1

によるコメントはMark Fitzgerald正しい方向に進んでいますが、まだ十分ではありません。

正しい部分は、4 番目のパラメータが指定されておらず、かつ FALSE として指定されていないことです。

指定されていない場合は、デフォルトで TRUE になります。TRUE として指定されている場合も TRUE になります。いずれにしても、ここで表示されている問題が発生しますが、ここでは他に何かが起きており、それがまさに望ましくない結果を引き起こしています。

それに対処する前に、あなたのような使用法では、正しい結果を得るためには明らかに完全一致が必要であることを指摘しておく必要があります。したがって、4 番目のパラメータを追加して FALSE に設定し、完全一致を探すようにする必要があります。そうすれば、これから対処する根本的な問題は問題にならなくなります。これは利点です。

本当の問題は、Excel にルックアップに使用する範囲を指示する方法、つまり 2 番目のパラメータから生じます。C:VExcel にそれらの列のすべてのセルを使用するように指示する を使用しています。 これを行わない理由は山ほどありますが、ここで重要なのは 4 番目のパラメータの TRUE 値に関係しています。

TRUE の場合、Microsoft はVLOOKUP()(完全一致を期待せずに検索する場合の他の関数と同様に)、検索値よりも「大きい」セルが見つかるまでデータを検索し、検索を停止して、その「大きい」値の直前の値を返します。これは実際には真実ではありませんが、あなたの問題を解決するには十分近いものであることを述べておきます。

彼らの主張によると、正しい結果は、ルックアップ列 (ここでは列 C) が最低値から最高値 ("AZ") の順に並べ替えられた場合にのみ得られるとのことです。そして、それは、あなたの場合でも、おそらくほぼ常に機能します (ただし、99.99% の確率です)。残念ながら、大勢の人は、データの他の機能を台無しにすることなく、その並べ替えを行うことができません。ほとんどの人は、他の条件に従って並べ替えたいだけであり、ルックアップ列で並べ替えることはできません。

では、何が起こっているのでしょうか。ルックアップは列 C で「CA-whatever」を検索しています。しかし、セル C1 の列ヘッダーから開始しています。そのヘッダーは「Barcode」です... ここまでは (ある程度) 順調です。次に、セル C2 でルックアップ値 (「CA」で始まる) よりも「大きい」何かを検索しています。セル C2 で、ルックアップ値とヘッダーの両方のアルファベット順で後に何かが見つかったとします。すぐに停止し、ヘッダー セルに「後退」します。これは範囲内の行 1 で、右に列 S まで読み込まれ、そのセル (S1) で「Room」が見つかります。これが返されるものです。

実のところ、C2 がアルファベット順でルックアップ値を過ぎていなかったら、C380 に到達するずっと前に何かが見つかったはずで、その前の時点で停止し、1 行戻って、その行の列 S の値を返していたはずです。これもまた間違っていたはずですが、気付くほど明らかに間違っていたわけではないかもしれません。結局、正常に見える余裕ができたはずです。すべて問題ないように見えるかもしれません。それでも、4 個、32 個、あるいは 200 ~ 300 個の誤った値が「今」簡単に存在する可能性があります。

冒頭で述べたように、いずれにしても完全一致が必要なのは明らかなので、検索に 4 番目のパラメータを追加します。FALSEではなく を使用してくださいTRUE。 FALSE を指定すると、完全一致の検索が強制されます。

この問題は 2 年以上前に投稿されたので、何らかの方法で解決した可能性が高いと思われます。しかし、これは他の誰かの役に立つかもしれません。MS が言うように動作するはずの、実際には私が言ったように動作する他の関数を使用して結果を追加することを説明するのに役立つかもしれない人です。ただし、私が触れたのは全体の主題のほんの一部にすぎません。ただし、ルックアップを実行するすべての関数でこれに遭遇する可能性があります。MATCH()そしてXMATCH()、新しいXLOOKUP()関数でも。確かに、新しい関数は非完全一致を使用する場合にのみこれに遭遇しますが、実際にそうであり、人々がそのように使用しているため... これが発生する他の場合もあります。

関連情報