• ベストアンサー

ExcelのVLOOKUPを使った検索について+α

またまた質問させてもらいます・・・ VLOOKUPは本来検索範囲の左端の列を検索していくの ですが、それを他の列をキーにしたいのです。ですが、 元表の順番を変えることができないので、検索できずに 困っています。そこで質問なんですが、 ・元表を変えずに(コピー等を作らずに)、関数内だけで 表を擬似的に並べ替えて、左端の列以外の列を検索キーと した列検索は可能でしょうか?可能なら方法はどうやれば よろしいでしょうか。 ・もしそれがだめな場合他のアプローチはありますが? できれば方法も・・・ あと、もうひとつ質問なんですが、検索範囲を指定する 時に左上のセルの位置は固定で右下のセルが表の行数 によって変化する場合、汎用的に関数で指定することは可 能でしょうか? つまり、B4:H14という範囲指定がある場合、表の行数がひ とつ増えるとB4:H15と範囲指定を変えてくれるような方法 はありますか?ということです。 ということです。それではよろしくお願いします。

  • ro-su
  • お礼率44% (11/25)

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

例えば、A1の値をG4:G15と照合して、一致したら対応するE列の値を持ってきます。  =IF(ISERROR(MATCH(A1,G4:G15,0)),"",INDEX(E4:E15,MATCH(A1,G4:G15,0))) ISERRORは見つからなかった場合の対応です。 範囲が変動する場合は、例えばD列は通番とかでデータの最後まで埋められている(空白が無い)とすれば、  =INDEX(INDIRECT("E4:E"&(COUNTA(D:D)+3)),MATCH(A1,INDIRECT("G4:G"&(COUNTA(D:D))+3),0)) でできるはずです。 見つからなかった場合の対応は最初の式のようにして  ISERROR(MATCH(A1,INDIRECT("G4:G"&(COUNTA(D:D)+3)),0)) と変形します。 ご参考に。

ro-su
質問者

お礼

ありがとうございました、この方法が一番うまくできました。ありがとうございます。

その他の回答 (2)

回答No.2

LOOKUP関数を使用されたらどうでしょうか。 =LOOKUP(検査値,検査範囲,対応範囲)という具合になります。 検査キーがB1:B15、C1の値で検索し、A列の値を取り出す場合は、 =LOOKUP(C1,B1:B15,A1:A15)になります。 >変化する場合、汎用的に関数で指定することは可能でしょうか? 何行まで値が入っているかを自分で指定する方法、例えば15行までデータが入っているのでD1セルに15と入力する方法で良ければ、 =LOOKUP(C1,B1:INDIRECT("B"&D1),A1:INDIRECT("A"&D1)) とかいう方法があると思います。 表の行数を関数で求めるのなら、D1セルに配列数式で、 {=MAX(IF(B1:B65535<>"",ROW(B1:B65535)))} を入力しておく方法もあるかと思います。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.1

>・元表を変えずに  元表をvloopupで使用しやすいように  違うシートにコピーしてお使い下さい >B4:H14という範囲指定がある場合、表の行数がひ  INDEX関数をお使い下さい。  使用方法はヘルプでINDEXと入力し検索して下さい がんばって下さい

ro-su
質問者

補足

「コピー」とかは無しでと書いたつもりなのですが・・・(つまり違うシートにコピーを作らずにという事です。) それがあればやっていますし。自分でもわかります。それ以外の方法が無いかということです。

関連するQ&A

  • エクセル VLOOKUPでの複数のデータ抽出

    「表の左端列」で検索する行によって、隣のセルに取り出せるデータの範囲を指定する、 ということは可能でしょうか。 例えば、左端でAを選んだ場合は表のこの範囲から次を選ぶ、 Bを選んだ場合は同じ表の違う範囲から選ぶ、といったようなことです。 普通のVLOOKUPでは1対1、左端で行を選ぶとその行の何列目のデータを取り出すか、 といったことしか出来ないので、それを複数の列の中からさらに選ぶことが出来るように 設定変更したいです。 ご教示よろしくお願いいたします。

  • EXCELマクロ 検索 VLOOKUP

    Excelマクロで 検索とその結果のコピーを行いたいのですが、全くの素人のためご教授願えればと思います。 Excel2002で 2つの表から共通する部分をKEYに付随するデータ抜き出したいと思っています。関数VLOOKUPを使えば簡単な作業かと思いますがVBAではそのVLOOKUPやFIND、それにLOOPなどの使い方が今ひとつ理解 できません。 具体例として 表1には A-Z列まで約1000行のデータが存在します。 表2は表1と同じシート上の直ぐ隣列AA-AK列まで表1より必ず多い行数のデータが存在します。また表1のA列にあるデータは すべて必ず表2のAA列に含まれます。 行いたい作業は、VLOOKUPのような検索で、表1A列と表2AA列に共通したデータがあった場合、表2の該当セルを基準としてALからBJ列セルに表1の該当行のデータB-Z列をすべてコピー貼り付けすることです。 A・AA列とも同列内では重複も空白もなくソートされています。 これら以外の列には同じValueのデータや空白が存在します。またデータ件数(行数)も表1・2とも一定ではなく都度変動します。 解りやすくご説明いただけると幸いです。宜しくお願いいたします。

  • エクセルのVLOOKUPについて

    VLOOKUP関数について VLOOKUP関数の使用方法は  VLOOKUP(検索キー、範囲、列数、検索の型) である  多くのWEBの使用例では検索キーで検索するのは「範囲」の第1列であり、  返す列の値は2列以降という例ばかりである。  このとき、検索キーで「範囲」の第2列を検索して、  「範囲」の第1列の値を返すようにできるか、という質問です。 なおエクセルの版数は2000です。 よろしく、お願いします。 以上

  • Vlookup関数で検索結果がエラーになってしまう

    お世話になります。 Vlookup関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • EXCEL2022でVLOOKUP関数の「検索値」に><等の不等式を使って、「近似値」を使いたい!

     EXCEL2022でVLOOKUP関数の「検索値」に、ヘルプでは「近似値」が使えるとあるので、><等の不等式を使って、範囲指定を行い、複数の項目を抽出してきたい!  例として、 (1)2<「検索値」<30、程度で、60項目程を選び出したうえ、 (2)なおかつ、その60項目の中から、オートフィルタ機能を使用し   て、「トップテン」上位の10項目を表示させる方法  を模索中です。  ★実際に、このVLOOKUP関数を使用して、プログラムを作成されている方は、  「検索値」に『範囲指定を行い、複数の項目を抽出できない』ようだと、★たった一つのみの単独の値に対応する単一項目★しか抽出できない為、広範な使用に適さず、従って、たいへん使い勝手が悪い、使用用途の限定される、いわゆる”退屈な機能”とならないでしょうか?  ヘルプより、  VLOOKUP 関連項目 指定された範囲の左端の列で特定の値を検索し、範囲内の対応するセルの値を返します。  書式 VLOOKUP(検索値,範囲,列番号,検索の型) 検索値 範囲の左端の列で検索する値を指定します。検索値には、値、セル参照、または文字列を指定します。  横に”行”を検索して、一致する項目を表示させるものでは、HLOOKUP関数というものも在りますが、私の意図する”使用方法”を満足させる”関数”、343もあれば、一つ位はな~い"かんすぅ~"?(意図した訳ではないのに、やや、字面が、難しい言葉ばかりになってしまったので、"和み系の、普段は言わないジョーク"をネットなので、書き込んでしまいました。やや反省。)(^_^;)

  • エクセルのVLOOKUPについて

    エクセルのVLOOKUPについて ものすごく読みづらい、理解しづらいかもしれませんが付き合ってください・・・ エクセルでvlookupを使って検索するときに検索する対象の表(シートではない)が複数あって、表ごとに空白の列で区切ってあって、検索するキーワードの文字列が同じものが複数ある場合、ダブっているものが複数あるので正常に検索することができないですよね? 検索する対象の文字列は全てダブっていないものでないといけないですよね? 検索する列範囲で一列目に検索する文字列の隣にたとえばグラフの範囲を書き込んだら検索する文字列のところにグラフの範囲が表示されますがその範囲に基づいて指定の種類のグラフを作成するような関数はありますか? 聞きたいことの要約 文字列で検索する 検索する範囲の2列目にグラフの範囲を書き込む VLOOKUPを検索する文字を書くところに入れる 文字で検索する グラフの範囲が返され自動的に縦棒グラフが自動的に表示される この様なことができますか?

  • vlookup

    Excel関数であるVLOOKUPについて vlookupの構文は、 (検索キー, 範囲, 番号, [並べ替え済み])です。 質問は、次の説明についてです。 並べ替え済みを TRUE に指定するか省略し、範囲の先頭列が並べ替え順でない場合、間違った値が返されることがあります。 これ(間違った値が返される場合)は、どのような場合なのでしょうか? 検索対象の列(指定した範囲の先頭列)が並べ替え済みにすることが必須なのでしょうか? 初心者で恐縮ですが、よろしくお願いします。

  • VLOOKUP関数について

    BとC列に抽出表があり検索範囲データがEとF、HとI列の2グループに分かれています。 VLOOKUP関数を使って検索範囲が2つのグループに分かれている場合の計算式を教えてください。 VLOOKUP関数以外でも出来る方法があれば教えてください。

  • VLOOKUPの列番号について

    VLOOKUPを使っていて、疑問に思ったことがありました。 わかる方がいれば、是非教えてください。 なぜ、列番号はセル参照ではいけないのでしょうか? VLOOKUP(検索値, 範囲, 列番号, 検索の型) ヘルプを確認したところ、以下のようなものでした。 【列番号 範囲 内で目的のデータが入力されている列を、左端からの列数で指定します。列番号 に 1 を指定すると、範囲 の左端の列の値が返され、列番号 に 2 を指定すると、範囲 の左から 2 列目の値が返されます 】と、言っていることは理解できるのですが、範囲内といってもセルに番地はあるわけで、それを使っても良いのでは・・・? なぜ、セルの番地ではなく「1列目」なんでしょうか? 説明の足りない文章で大変申し訳ないのですが、何卒よろしくお願いします。

  • vlookup関数詳しい方おしえてください

    vlookup関数で質問です。 関数の説明本などをみると、 検索する値は「左端」でなければならないという記載を見かけ、 例にあがっている図も検索する値がA列になっている場合が多いので、 エクセルシートの「A列」に検索するデータがないといけないと 思っていました。なのでいつも、わざわざ列を入れ替えしていました。 しかし、今日、目からうろこで気が付きました。 絶対A列でなくていいのですよね。 たとえば、検索する値がC列にあるなら、C列を左端にして、 範囲を指定すればいいのですよね。C1:G5など。 お教えください。よろしくおねがいします。

専門家に質問してみよう