• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2003VLOOKUP 検索値が数式の場合)

Excel2003VLOOKUPで数式の検索値を処理する方法

このQ&Aのポイント
  • Excel2003VLOOKUPで数式(表示形式がパーセンテージ)で検索値を処理する際にエラーが発生する場合の解決方法について教えてください。
  • 問題のあるケースでは、VLOOKUPで検索するデータが100%以下の場合に表示されない問題が発生します。
  • 数式をそのまま保持しながら検索値を処理し、結果を%表示で表示する方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

VLOOKUP関数の#N/Aエラーは検索値がリスト上にない場合に表示されます。 原因は計算結果のC2セルの検索値がリストの数値と正確に同じ値ではないためです。 >検索値(C2)を値で貼り付けすると、問題なく表示されますが、 「値貼り付け」ではなく、「手入力」した場合ではないでしょうか? このようなケースで検索値となる計算結果と手入力の値(元データのリストをオートフィルで連続データとして入力した場合は同じ値にならないことがあるので注意)を確実に同一データにするには、C2セルの数式には、以下のようなTEXT関数を利用するのがお勧めです。、 =TEXT(B2/A2,"0%")*1

aptal
質問者

お礼

ありがとうございました。 おかげさまで1発解決しました!感動です! また私のわかりにくい質問の意味を読み取ってくださり、ありがとうございました。 またどうぞよろしくお願いいたします。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>エクセル2003VLOOKUP 検索値が数式の場合 これを文面どおり読むと質問者は、エクセルの関数の本質(制約)をはっきり認識できてない。 エクセルの関数は「セルの値」を見て、使って、計算したり処理したりする、仕組みだ。セルには「セルの値」のほかに、書式や、数式や、コメントなどのデータ・内容がある。関数はその1つの「セルの値」しか問題に出来ない。また式を入れたセルのセルの値しか返せない。 だから関数式で数式を直接対象にするのはもってのほか。 数式の結果のセルの値の検索で、本質問は解決しないのか、考え直すこと。もちろんVBAを使うとセルに入っている 数式がどういう形か数式の文字列でわかるが、そんな話ではないだろう。 質問で聞いている内容と、標題が食い違っている。 ーー もうひとつ、関数はセルの値を問題にするので、出来たら単純なために、実数(%表示数でなく、100%は1.0.30%は0.3のように)で検索表を作ることをお奨めする。 %表示でやってうまく行くかは、質問する前に、自分でテストをやってみれば良い。 ー もうひとつは%表示の検索表が頭にあるときは、そのぴったりの値を探すことは少なく、30-49%ならXXとかの場合のように範囲に該当するかがほとんどと思う。 その場合はVLOOKUPの関数の第4引数はTRUEだ。ここが本件の誤解のメインテーマだと思う。 こちらのほうが、まずVLOOKUP関数として考えられたのではないかと個人的に推測している。 しかしこのコーナーのVLOOKUPの用途では95%はFALSE型のようだ。

aptal
質問者

お礼

ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えば0.3245と入力して%表示にすれば32%と表示され数式バー上では32.45%のように表示されますね。 B2/A2と計算で求めた値でも実は32%と表示されていても32.45%のような数値でもあったりするわけです。 そこでVLOOKUP関数を使っていますがVLOOKUP関数には検索の型でFALSEとする場合とTRUEにする場合にがあります。お示しの式はFALSEを使っていますので他のシートの表の範囲の最初の列にそのデータと一致するデータがあることが必要です。おそらく他のシートの表では32%も32.45%もないのではないでしょうか?一致するデータがない場合には#N/Aのエラーが表示されます。 そのようなことが起こらないようにするためにはTRUEを検索の型に使うことが必要でしょう。TRUEは検索値と一致する値がないときは検索値よりも小さい値の最大値が検索されます。ただし、この場合には照合されるデータは昇順に並べておくことが必要です。

aptal
質問者

お礼

ご回答ありがとうございました。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

B2/A2の実体は「0~1の数値」です。 Excelは小数点以下の計算が正確に出来ないという「仕様」になっているため、C2セルの中身を直接検索には使えません。C2セルの中身も、比較対象にするセルも「製数値」でないと上手く比較できないのです。 ですので C2: =ROUND(B2/A2*100,0) と整数値にしたうえで、セルの表示形式で「ユーザー定義」を選んで 0"%" と定義して"%"を表示させ、VLOOKUPで比較する表の方も整数値に書き換えて下さい。

aptal
質問者

お礼

質問後早急に、またご丁寧にありがとうございました。

aptal
質問者

補足

早急にありがとうございます! いただいた式を入力してみましたが、 C2の値、94.8%が、9500.0%になってしまいました。(汗) この件ももしご存知でしたら(お時間あれば)ヘルプいただけると助かります。 たびたびすみません。

関連するQ&A