• ベストアンサー

エクセルのVLOOKUP関数

エクセル2003,2007,2010を使っています。 セルA1に「3Z」を、セルC1からC3にそれぞれ「X」,「Y」,「Z」を入力し、セルB1に「=VLOOKUP(A1,C1:C3,1,TRUE)」を入力すると、結果が「#N/A」になってしまいます。 なぜ、検索出来ないのでしょうか? また、セルC3を「3Z」にしても同じく結果が「#N/A」になるのに、さらにセルC2を「2Y」にすると結果が「3Z」となるのですがなぜでしょうか?

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

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

LOOKUP系の関数やMATCH関数などで完全一致型以外の検索を行う場合は、該当するデータを探すときに二分検索を行います。 たとえば5つのデータが並んでいる場合は、その真ん中の3つ目のセルを最初に検索し、この値が検索値より大きいか小さいかによって(文字列の場合は文字コード順の大小になります)、小さければより後のデータの中間のセル(4番目のセル)を検索し、大きければ前のデータ(2番目のセル)を検索し、さらにこれらの値と検索値との大小を判定して移動する方向を決め、該当のセルを求める仕組みになっています。 今回のケースでは3つのデータですので、最初に真ん中のセルの大小を判定することになりますが、前者の2つのケースは真ん中のデータがいずれも検索値よりも大きいパターンになりますので1つ目のデータを検索することになりますが、これも検索値より大きいため、該当データがないことになります。 一方、最後のデータでは、真ん中のデータが検索値よりも小さいので、3つ目のデータを検索することになり、このデータが返されることになるわけです。 このような基準でデータの中から検索値を探してきますので、データを昇順(MATCH関数では降順もあり)に並べておく必要があるわけです(完全一致で検索する場合には並べ替えておく必要はありません)。

choshu5
質問者

お礼

理解できました。 ありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

VLOOKUP関数の第4引数をTRUEにして計算させている場合、検索対象範囲(C1:C3)を正しく「昇順」に並べ替えておかないと、エラーや「保証されない結果」が計算されてしまいます。 ご質問で試されたいろいろな値を実際に「昇順」で並べ替えてみると、エクセル的には添付図右上段のような大小関係になります。 左上段のように昇順に揃っていないデータからでは、左下の計算例のように例えジャスト値であってもエラーで計算できなかったり、あるいは間違った計算結果になります。

choshu5
質問者

お礼

ありがとうございました

関連するQ&A

  • エクセルのIF関数とVLOOKUP関数について教えてください。

      A B C 1 A1 B1 C1 2 A2 B2 C2 ・ ・ ・ 上記のような表があり、セルX、Yに入力した値が2つの条件に合致した場合、セルZにC列の値を返すような数式を作っています。 たとえば、セルXの値がA1より小さく、かつ、セルYの値がB1より小さい場合にはセルZにC1の値を表示する、という数式を作りたいのです。 (ちなみにAn、Bn、Cnにはそれぞれ数字が入ります) =IF(AND(X<=A1,Y<=B1),C1,IF(AND(X<=A2,Y<=B2),C2,・・・ AND関数を利用してこのように数式を入れると、途中まではうまくいくのですが、引数が多いため途中からエラーが出てしまいます。 (引数の数は10個以上あります) IF関数とVLOOKUPを組み合わせればいいというところまではわかるのですが、どのように条件設定をすればいいのかがわかりません。 エクセル初心者で恐縮ですが、どなたか詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

  • vlookup関数について

    vlookup関数について教えてください。    A       B         C      D      E        1  あじ    りんご     2  さば    みかん            3  さんま   ばなな        という内容で、D1セルに入力した内容に応じてE1セルに内容を転記させていました。 E1=VLOOKUP(D1$A$1$B3,2,FALSE) 上記で運用していたときはうまくいったのですが、 Cの列にも文字をいれ、E1セルにはCの内容を検索して、B列の内容を転記したいと 思って作りかえるとうまくいきません。 今回の新しいやり方では、 ・A列からの検索はいらない(でも他ファイルから参照されているので、削除、移動はできない) ・E1=VLOOKUP(D1$A$1$C2,2,FALSE)では #N/A となる ・A列からの検索がいらないから、E1=VLOOKUP(D1$B1$C2,1,FALSE) でも #N/A 調べてみたのですがわからなくて・・・ どこがおかしいのか、教えてください。宜しくお願いします。

  • EXCEL VLOOKUPで含む検索

    _|    A    |  B   | C  | | Z | 1 |赤いイチゴ |みかん |\30 | |   | 2 |        |リンゴ  |\50 | |   | 3 |        |イチゴ  |\80 | |   | A1に検索値(例:赤いイチゴ)を入力すると、検索範囲(B:C列)のっている単語が含まれていれば値段をZ1に表示したいのですが、うまくいきません。 検索値が一致ならば、=VLOOKUP(A1,$B:$C,1,FALSE)だとおもうのですが、=VLOOKUP("*"&A1&"*",$B:$C,1,FALSE)だと#N/Aエラーが出ます。 どなたか、知恵をお貸しください。

  • 【エクセル】 VLOOKUPについて

    エクセル関数の VLOOKUPは範囲選択した表の左端の列しか検索対象に出来ないのでしょうか? 例えばSheet1に↓のような表があって     A      B     C     D     E 1 機種名   購入日   シリアルNo   メーカー名  ・・・・  2  X     07/01/01   123X         LLL 3  Y   07/02/03    456Y       MMM 4  Z   07/05/21    789Z        NNN 5  ・・・ 6  ・・・ Sheet2に↓のような表を作って、   A     B 1   シリアルNo   機種名 2   456 3   789  4   123 5    432 B列にVLOOKUPでsheet1の表から、シリアルNoに対応する機種名を表示 させることは出来ますか? 特にVLOOKUPにこだわってるわけではないので、他の方法でも出来る のであれば良い方法を教えてください。よろしくお願いします。

  • エクセルのVLOOKUP関数の検索値が数式の場合について

    エクセルのVLOOKUP関数に悩んでいます。 どなたかご指導お願いいたします。 *--------------------------* A~F列 すべて書式が時刻です。 A、B列には数式で計算された時刻が入力されており、 C列はA列+B列という計算式がはいっています。 F列に=VLOOKUP(C列、D:E列、2、FALSE)というように C列を検索値とし、D列を参照し、E列にある時刻をF列に 設定したいのですが、結果が#N/Aになります。 例えばA,B列が数式ではなく入力した値であれば 検索値であるC列がA列+B列 でも結果はOKでした。 検索値は数式セル同士を足し算した数式は設定不可能なのでしょうか?

  • vlookup関数

    vlookup関数 book1に犬シートと猫シート、結果シートがあるとします。 犬シートのA1セルに"イヌ"というデータがあり、 猫シートのC1~C9セルに"ネコ"、C10セルに"イヌ"というデータがあります。 で、結果シートのA1セルに、 =VLOOKUP(犬!A1,猫!C1:C10,1,FALSE) という関数を入力すれば結果として"イヌ"が表示されると 期待したんですが、#N/Aとなってしまいます。 どうすればいいんでしょうか。

  • Vlookupの応用?

    通常、VLOOKUPを使い、検索する場合は、 =VLOOKUP(検索値,範囲,列位置,検索の型)となると思います。 このうち、検索値と範囲(の左端)、列位置をどこかのセルから取得するにはどのようにすればよいでしょうか? たとえば、 A1セルには1と入力(A列を参照)、B1セルには2と入力(B列を参照)、C1セルには3と入力すると、 A3セル=VLOOKUP(A3,B:Z,3,false) となるようにしたいのですが、どのようにすればよいでしょうか。 お願いします。

  • 【エクセル】VLOOKUPが上手くいきません。。。

    VLOOKUP関数がうまくいかないので教えてください。 下のような表になっています。    A     B    C    D    E    F 1  番号  名前               コード 2 11-2345  ABC  11  #N/A  11  あああ 3 22-3456  DEF  22  #N/A  22  いいい  4 33-4567  GHI  33   #N/A  33  ううう 5 44-5678  JKL  44        44  えええ 6 ・・・・ ・・・               55  おおお 7 ・・・・ ・・・               66  かかか A、B列はがもとから打ち込んであるデータです セルC2は =LEFT(A2,2) でA列のハイフンの前を表示しています。 セルD2に =VLOOKUP(C2,$E$2:$F$7,2,FALSE) を入れると#N/Aが表示 されます。ちなみに、セルC2にLEFT関数ではなくて、数字をそのまま、 11と入力すると、セルD2に「あああ」と表示されます。どこがいけない のでしょうか? $E$2:$F$7はC列の二桁の数字に対応するコードの表になっています。 エクセル2003を使っています。

  • EXCELのVLOOKUP関数の特殊な使い方を教えてください。

    初めて投稿しますので、宜しくお願いします。 最近会社でエクセルの表を作って欲しいと言われたんですが、元々エクセルとかはあまり得意ではないので苦戦しており、いろいろ調べても解決できなかったのでこちらでご相談させていただきます。 質問内容 EXCELにて型式一覧の表から当てはまる値を自動的に抜き出したい。 セルは以下の通りです。  |  A   |  B  | C | D |  |------|-----|-------| 1 | 型式番号 | 型式  |   値   |  |------|-----|-------| 2 |      |     | max | 10 |  |      |     |-------| 3 |  01   |  a  | min | 20 |  |      |     |-------| 4 |      |     | ave | 30 |  |------|-----|-------| 5 |      |     | max | 40 |  |      |     |-------| 6 |  02   |  b  | min | 50 |  |      |     |-------| 7 |      |     | ave | 60 |  |------|-----|-------| 8 |      |     | max | 70 |  |      |     |--------------| 9 |  03   |  c  | min | 80 |  |      |     |-------| 10|      |     | ave | 90 |  |------|-----|-------| 検索用  |  A   |  B  | C | D |  |------|-----|-------| 15| 型式番号 | 型式  |   値   |  |------|-----|-------| 16|      |     | max▼| 10 |  |------|-----|-------|  上記の検索用のセルに入力したときに自動的に表示できるようにしたいのが今回の質問です。 手順と条件 1.A16の所は型式番号入力する(キーボードやテンキーなどで直接入力) 2.A16のセルに001と入力するとB16に自動的に【a】と表示される(VLOOKUPで処理しています。) 3.次にC16のセルでは入力規則リスト型にして、中の値は【max,min,ave】の3つだけを表示。 4.C16のリストから【max】を選ぶと型式番号001の型式aの値maxに対応している【10】という値が自動的D16に表示される。 5.A2~A4はセル結合。同じようにB2~B4までセル結合しております。 上記のような事は出来るのでしょうか? 説明下手で申し訳ございませんが、何卒宜しくお願い致します。

  • vlookup関数のことになりますm(_ _)m

    エクセルのvlookupに関してですが、どうやっても表から対象の内容を 1つしかひっぱてこないので、どうやったら、入力した内容に合致した 全ての内容をひっぱてくれるのか教えてくださいませm(_ _)m 表は.... 入力するところは1つです。 入力する数値⇒【  】   参照する表は A  B 200 ばなな 200 みかん 300 りんご 300 イチゴ 300 キュウイ 500 すいか 700 めろん になります。。。(Aは重さ、Bは果物名です) 現在 結果の欄に【=VLOOKUP(入力欄,A1:B7,2,TRUE)】と式を入れているのですが、この場合、数値を"400"と入力した場合 結果欄には【キュウイ】が表示されますが、同じ数値である【イチゴ】と【りんご】を下のセルもしくは別のセルに併せて表示させるにはどのようにしたらいいのでしょうか? ※結果には入力欄に入力した値よりも低いけれども一番近い物が選ばれる様にしたいのです。例えば 入力値が260であれば【ばなな】【みかん】が、、入力値が520であれば【すいか】だけが表示されるという形で。。。 ※果物は100ぐらいありますので、200<300 という風に1個づつしてしまうのは。。チョットきついかもしれないです

専門家に質問してみよう