• 締切済み

vlookup関数とexact関数の結果の違い

vlookup関数を使ったときにエラーになったので、対象の2つのセルをexact関数で調べてみたのですが、exact関数の結果がTRUEになっています。 原因がわからず困惑しています。 ちなみに対象セルの内容は100文字程度の数字、記号です。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

VLOOKUP関数の検索対象は範囲の左端の列のみになります。 =VLOOKUP(A1,B:D,3,FALSE) 上記の式ではA1セルの値がC列に有ってもB列に無いときはエラーになります。 >対象の2つのセルをexact関数で調べてみたのですが、exact関数の結果がTRUEになっています。 模擬データとVLOOKUP関数の数式を提示して頂けないとエラーの原因が分かりません。 尚、EXACT関数で確認するよりCOUNTIF関数で確認された方が良いでしょう。

fisica
質問者

お礼

皆様大変ありがとうございます。 原因が判明いたしました。 255文字を超えていたためのエラーのようでした。 質問中に「100文字程度の数字、記号」と書いておきながら、そうではない条件のものがありご迷惑おかけしました。 回答をいただきありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 VLOOKUP関数は実際に多くのユーザーが問題なく使用している関数なのですから、 >vlookup関数を使ったときにエラーになったので、 という事は、「質問者様のVLOOKUP関数の使い方」に間違いがある事が原因だと考えられます。  ですから、原因を明らかにするためには、質問者様がどの様な形でVLOOKUP関数を使っているのかという情報が必要になるのですが、それにもかかわらず質問者様は「どんなVLOOKUP関数を作ったのか」という事すら明らかにしてはおられません。  それでは何が悪かったのかなど、誰にも正確に答える事が出来る訳が御座いません。  VLOOKUP関数は VLOOKUP(検索値, 範囲, 列番号, [検索の型]) という型式で記述される関数で、 「検索値」の所に「値」或いは「単一のセル」を指定し、 「範囲」の所にセル範囲を指定し、 「列番号」の所に「表示したい値が入力されているセルが存在する列が、『範囲』の所で指定したセル範囲の中で、左端から数えて何番目の列に相当するのか」という事を指定すると、 「『範囲』の所で指定したセル範囲の中の左端の列のセル範囲」の中から、「『検索値』の所で指定した『値』そのものか、或いは指定した『セル』に入力されている値」を検索し、 該当するセルが存在していた場合には、その該当しているセルと同じ行にある「『範囲』の所で指定したセル範囲の中の『範囲』の所で指定した数値番目の列」に入力されている値が返されます。  又、 [検索の型]の所に「FALSE」や数値の0を指定すると、「範囲」の所で指定したセル範囲の中の左端の列の中から、「検索値」の所で指定した値と完全に一致する値が入力されているセルのみが検索されます。  一方、 [検索の型]の所に何も指定しないか、或いは「TRUE」や数値の1を指定すると、「範囲」の所で指定したセル範囲の中の左端の列の中から、「『検索値』の所で指定した値よりも小さい値が入力されている最後のセル」が検索されます。(但し、全く値や関数が何も入力されていない完全に空欄のセルは無視されます)  それがエラーになったという事は、質問者様が上記の形式のどれかに反する形でVLOOKUP関数を使っているからだと考えられます。  例えば、 ・「検索値」の所に空欄のセルを指定している ・「列番号」の所で数値以外の値を指定している ・「列番号」の所で0やマイナスの数値を指定している ・「列番号」の所で「『検索値』の所で指定したセル範囲」の列数よりも大きな値を指定している ・[検索の型]の所に「FALSE」や数値の0を指定しているのにもかかわらず、「『範囲』の所で指定したセル範囲の中の左端の列のセル範囲」の中には、「検索値」の所で指定した値と完全に一致する値が入力されているセルが存在しない ・ [検索の型]の所に何も指定しないか、或いは「TRUE」や数値の1を指定しているのにもかかわらず、「『範囲』の所で指定したセル範囲の中の左端の列のセル範囲」の中には、「『検索値』の所で指定した値」よりも小さい値が入力されているセルが存在しない などといった事が原因となり得ますので、質問者様が上記のエラーの原因となりえる過ちの内のどれかを犯していると思われます。  因みに、回答No.1様の仰っておられる >「検索値」も検索される側も一見同じに見えても、此方文字列の数字、彼方数値の場合は仰るような現象になります。 は、数値データと文字列データの違いという事になりますから、 >・[検索の型]の所に「FALSE」や数値の0を指定しているのにもかかわらず、「『範囲』の所で指定したセル範囲の中の左端の列のセル範囲」の中には、「検索値」の所で指定した値と完全に一致する値が入力されているセルが存在しない >・ [検索の型]の所に何も指定しないか、或いは「TRUE」や数値の1を指定しているのにもかかわらず、「『範囲』の所で指定したセル範囲の中の左端の列のセル範囲」の中には、「『検索値』の所で指定した値よりも小さい値が入力されている最後のセル」が存在しない のどちらかに該当します。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.1

VLOOKUP(検索値,範囲,列番号,[検索の型]) が「vlookup関数」の構文ですね。 「検索値」も検索される側も一見同じに見えても、此方文字列の数字、彼方数値の場合は仰るような現象になります。 つまり、=EXACT(A1,B1)、=(A1=B1) の戻り値は、前者は TRUE、後者は FALSE というように。 分っかるかなぁ~?

関連するQ&A