vlookupで列番号を使わない方法は?(Excel)

このQ&Aのポイント
  • Excelで異なるブックからマスターデータを参照する際に、vlookupの列番号を変更する手間を省きたいです。
  • マスターデータの列の間にデータを追加した結果、vlookupの列番号を変更する必要が生じました。
  • vlookupの列番号を変更する作業が煩雑で、多くのファイルや複数のデータを参照する場合には困難です。方法があれば教えてください。
回答を見る
  • ベストアンサー

vlookup で列番号を使わない方法は?(Excel)

Excelでいくつものブックから、マスター.xlsを参照して、データベース的に使用しています。 マスターで、最初にA列:ID、B列:氏名、C列:ふりがな、D列:姓、E列:名、F列:所属と作り、 他のブックからIDからvlookupを利用して、それぞれ必要なデータを導き出していたのですが、 必要が生じてマスター.xlsのそれぞれの列の間に色々と加えてしまったために、例えば、所属がI列まで移動してしまいました。 範囲に名前を付けているので、所属を検索する関数が 「=vlookup(a1,'マスター.xls'ID所属検索,6,false)」だったのが、 「=vlookup(a1,'マスター.xls'ID所属検索,9,false)」と変更しなければなりません。 検索元のvlookupの列数を変更しなければならないのが非常に面倒です。 何か方法は無いのでしょうか? ファイルもたくさんあるし、そのファイルの中でも参照したいデータも複数あるので、気が遠くなります。 ヒントになりそうなことでも結構ですので、ご教授下さい。

noname#61366
noname#61366

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

  • ベストアンサー
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

列番号をMATCH関数で参照してはどうですか。 これなら、リンク更新の度に列番号を追尾します。 例 =MATCH("項目",'C:\[Book2.xls]Sheet2'!$2:$2,0) 細かなところは、仕様に合わせて変更してください。

noname#61366
質問者

お礼

ありがとうございます! 回答いただくとメールがもらえるように設定していたはずが、メールが届かなくて確認、お礼が遅くなりました。 マッチ関数の使い方を理解するのに時間がかかりましたが(^^;)、 無事、組み込むことができました。 ずっとずっと悩んでいたことが解決できました。 本当にありがとうございました。

関連するQ&A

  • VLOOKUPの列番号について

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

  • VLOOKUPで列番号を移動させたい

    すいません。質問なのですが VLOOKUPで=VLOOKUP(検索値,範囲,列番号,FALSE) の式の中で列番号を増やしていくことは可能でしょうか? たとえばA1では=VLOOKUP(検索値,範囲,2,FALSE)であった式がB1では=VLOOKUP(検索値,範囲,3,FALSE)に なるみたいなかんじです。 手動でなくそういう式にできたらと思って ご相談させていただきました。

  • エクセルでVLOOKUP関数

    お世話になっています。 Excel2003を使っています。 元となる名簿のブックAがあります。 それぞれ、違うブックにVLOOKUP関数を使って、範囲をAからリンクさせるようにしています。 ブックAの名簿は人が増えたり、個人データを新たに追加する毎に行や列が増えていきます。 今のところ =VLOOKUP(A1,'[ブックA.xls]名簿'!$A$3:$W$100,3,0)) この式を違うブックに入れているのですが、 ブックAの行数が増えても、「100」のまま動きません。 ブックAの行数・列数が増えたら、リンクしてる関数を入れている、他ブックも自動的に増えるようにする方法はありますか? 初歩的な質問ですみませんが、よろしくお願いします。

  • [EXCEL]VLOOKUP関数がうまくいかないので助けてください

    あ.xls   B  C  1 10   2 12 3 15 い.xls   B  D 1 10 100 2 15 150 3 18 180 あ.xlsファイルのC列に、 あ.xlsファイルのB1セルと、い.xlsファイルのB1を見比べて同じ値なら、 い.xlsファイルのD1の値をあ.xlsファイルC1に値を表示する数式を 入力しようと思います。 「=VLOOKUP(B1,[い.xls]Sheet1!$1:$3,4,false)」と あ.xlsファイルのC1セルに数式を入力しましたが、すべてエラー(#N/A)で 返ってしまいます。 正常に機能するよう、数式を教えてください。

  • ExcelのVLOOKUPの列番号を一括で変更したい

    検索しても自分では見つけられなかったので、質問させてください。 私はExcel2007の一個前のものを使っています。 仕事上、sheet1でVLOOKUPを使い、sheet2(データ入力用シート)の情報を読み取るブックを使っています。 作った人とは連絡が取れないので、知恵をお借りしたいです。 そのExcelのVLOOKUPでは、sheet2の14列目を読み取るようにしていますが、13列目に列を挿入して、15列目(挿入前は14列目)を読み取るようにしたいです。 しかし、sheet1のVLOOKUPは1500行も使っている上に、VLOOKUPを使っている行や別のデータを入れている行もあり、簡単には引数を14から15に変更出来ません。 sheet1のVLOOKUPの14を15に返る簡単な方法は無いでしょうか? つたない説明で申し訳ありません。 宜しくお願いします。

  • [EXCEL2007]VBAからの別ブック参照VLOOKUPについて

    初めまして。 EXCEL2007で、VBAからFORMULA式を使って別ブックを参照するVLOOKUPを埋め込もうとしています。 このとき、対象となる別ブックのシートに、検索値に合致する情報がないと、「シートの選択」ダイアログが出てしまうのですが、これを出さずに、式を生かしたまま「#N/A」扱いにする(=ワークシート上でVLOOKUPに失敗したときと同じ結果とする)方法はないでしょうか? いろいろ試したのですが解決策が見つかりませんでした。 実装コードはつぎのような形になってます。 Sheet1.Formula = "=VLOOKUP(B2,'[Book2.xls]Sheet1!$B1:$C255,2,FALSE)" Book2のSheet1のB1:C255に、検索キー[B2]の値があるとき、C列の値を取ろうとしています。 このとき、検索に失敗すると、コード実行中に「シートの選択」ダイアログが出てしまうので、これを回避したいのが質問の主題です。 Application.DisplayAlerts = FALSE でもダメでした。 なにか良いアイデアがありましたらご教唆願います。

  • Vlookupの応用?

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

  • Excel関数(VLOOKUPの検索値が左端以外)

    VLOOKUPを用いて、データの取得を考えております。 しかし、検索したい文字列(B列)と戻ってきてほしい値の列(A列)が逆になっており、VLOOKUPを用いることが出来ません。 B列とA列を逆にすればよいのですが、多数のファイルがあり、変更することができません。 B列の値を検索し、A列の値を返すことが出来ないでしょうか? 何卒よろしくお願いいたします。

  • VLOOKUP関数の応用版をご教示下さい。

    VLOOKUP関数において、参照するシートをフレキシブルに選択できる方法を探しております。 「参照」ファイルの「???」シートを参照したいのですが、???=A1セルなのです。(セルA1にシート名が記入されているのです。) A1の内容が変わるとVLOOKUP関数参照するシート名が自動的に変わるように設定したいのです。 下記のように演算式を組んだ場合に、「????」の部分にどのような関数を使用すれば良いのでしょうか? VLOOKUP(F36,[参照.xls]????!$A$1:$X$227,4,FALSE) 補足として、参照ブックは別ファイルですが、常に開いた状態と練っております。(元ファイルと連動してファイルが開かれます。) どなたか宜しくお願い致します。

  • Excel2010 VLOOKUP 範囲の変更

    Excel2010が使え慣れなくて困っています。 外付けHDD(F:)から本体(D:)にエクセルデータを戻しました。 下記のように関数式を保存していましたが、 =VLOOKUP($A2287,'D:\ドキュメント\Excel\工事受注報告書.xls'!諸工事マスタ,7) 戻してみると =VLOOKUP($A2246,'F:\ドキュメント241102\Excel\工事受注報告書.xls'!諸工事マスタ,7) となり、外付けHDDのフォルダ名がVLOOKUPの範囲になってしまいました。 勝手に'D:\ドキュメントから'F:\ドキュメント241102に変わっていました。 しかたなく置換で範囲の変更を行いましたが、すべて置換を押す毎にファイルの確認をしてくるので関数式が3000行の10シートあるの到底この方法では置換はできません。 いい方法の範囲の変更はできないでしょうか? また、なぜ外付けHDDのフォルダ名が範囲になったのでしょうか? わかり難い説明ですが、よろしくお願いしまします。

専門家に質問してみよう