• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルにて複数のファイル(一覧表)から参照を切替えて検索するには?)

エクセルで複数のファイルから参照を切替えて検索する方法

このQ&Aのポイント
  • 部品調達部門で仕事をしている人が、エクセルで複数のファイルから参照を切替えて検索する方法について質問しています。
  • 具体的には、複数の一覧表ファイルから部品別の納品予定を作成したいという要望です。
  • VLOOKUP+MATCH、INDEX+MATCH+INDIRECT関数を使用して切り替えを行いたいが、具体的な使い方がわからないという疑問があります。また、IF関数を使用して簡単に切り替える方法を知りたいとも述べています。

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

  • ベストアンサー
  • odessa7
  • ベストアンサー率52% (101/192)
回答No.3

 #1です。  参考になったようで嬉しいです。 >苦手な関数ってお有ですか?  たくさんありますよ。行列系の関数は特に苦手です。^_^; >何故、この式でこの戻り値が返るのか?  作成したファイルの「予定表シート C4」セルを見てください。ここでは最終的にINDIRECT(A!B2)と言う結果を得たいわけです。なので、 ■Aの部分はF4セルのVLOOKUP関数で取得した値を参照しています。 ■続いてB2の部分ですが、これは「タイヤ」と「クラウン」に一致するセルの位置をシートAより取得する必要があります。そこでMATCH関数で『「タイヤ」と書かれたセルはシートAの部品名の列の何番目か?』という情報を取得し、同様に『「クラウン」は行の何番目か?』を取得する、ということをやっています。  言葉にするとややこしいですが、そんなに複雑なものではありません。  本当はこういうデータはエクセルではなくアクセスを使うべきなんでしょうが、残念ながら私は使いこなせません。しかもエクセルのマクロも使えないので、自然と無理やり関数を組んでしまうことが多いのです。このあたりは今後の課題です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • odessa7
  • ベストアンサー率52% (101/192)
回答No.2

 #1です。  後で少し考えてみましたが、先ほどのやり方はあまり格好の良いものではないんじゃないかと思い始めてます。  やはり、データベース用のワークシートを1つ作って、そこに下記のように対応表を展開し、(情報は各ワークシートから取得)VLOOKUP関数などで参照するのが良いかもしれません。       ┌─シート1─┐     ┌─シートX─┐       クラウン セルシオ ・・・・・・MR-S セリカ タイヤ ハンドル シート  ・  ・ ダッシュ  ただし、あまりにシート数が多い場合は、上記の方法も苦しいかもしれませんが。  それと、これは余談ですが、予定表の列に車種を記載されるおつもりなら、基になる部品対応表も列に車種を入力されるほうが良いと思います。(HLOOKUP使えば良いと言えばそれまでかもしれませんが、他の人が関数を見たときなど、すぐには意味が理解できないかもしれません。デバッグなどで苦労されると思います。)

superfighter823
質問者

お礼

何度も回答有難うございます。レベルの低い私の質問にわざわざ、関数式を組んでいただいて感謝いたしております。  VLOOKやHLOOKでもやれないことはないのですが、 元となる、一覧表は同じシリーズ毎に複数あるのですが、 1.特定モデルのみの専用部品がある 2.行/列のセルの数、範囲が一定でない 3.セルの結合がやたら多い 4.空白セルが多い 5.IF+VLOOKUPやIF+HLOOKUPでやる場合、車名の例に置き換えています型番の数が多くてIFの条件区別が細かく設定する必要があります。  LEFT,MID,FIND,ISERROR,OR,ISBLANKなど、型番区別条件にかなりネスト数が増えて式だらけになりそうです。  これらの関数をネストしてできるのですが、元からある一覧表を編集修正する必要があり、(1~5の項目)元の一覧表をいじることなく(編集修正に膨大な時間が掛かる)早くできる方法としてINDEX+MATCHの方法を考えたのですが、これをVLOOKUP+INDIRECTの活用例のような参照範囲をINDIRECT(セル範囲名前で切替)を用いてINDEX+MATCHでもできないかと考えました。  ○極力、元一覧表の編集修正をしたくない。    問題はINDEXの配列の範囲と行/列をMATCHでデーターを検索しますが、配列、行列にどのようにINDIRECTを挿入するのか調べましたが、(本、ネット)見当たりませんでした。  やりたいことはA1セルがクラウンであればクラウン一覧表からINDEX+MATCHで表引きをし、A2セルがセリカであれば別のセリカ一覧表から同様にデーターを探したいのですが、表切替をするためにINDIRECTをどこへ、どう挿入するのか分かりませんでした。  けれどODESSA7さんが昨日回答していただいて、本日新たに続きの回答をして下さったので大変、参考になりました。  初回答の力技の式を拝見して『こういう使い方もあるのだな』と感心しました。何故、この式でこの戻り値が返るのか、検証しているところです。  私はVLOOK,HLOOK,INDEXは資料作りに活用するのですが、ADRESSやOFFSET関数が今一理解できておらず、あまり使えません。(苦手な関数ってお有ですか?)  同じ検索/行列関数なのに『こちらはしくみが分かっているから慣れてる関数ばかり使ってしまいます。  長々となりましたが、私ごときのために、時間を割いて回答していただいたこと、重ね重ね有難うございました。

全文を見る
すると、全ての回答が全文表示されます。
  • odessa7
  • ベストアンサー率52% (101/192)
回答No.1

 ご質問内容にやや不明点はありますが、要するに「複数のシートの情報を参照するには?」、と言うことでよろしいでしょうか?(タイトルには「複数ファイル」とありますが、内容からは「複数シート」としか読み取れませんでした。)  ちょっと文章では表現が難しいですが、まずシート名参照用のワークシートを作りシート名を取得、あとはINDIRECTとMATCH関数で希望の値を取得する方法をとっています。  私の頭では、こんなのしか思い浮かびませんでした。もっとスマートな方法もあるでしょうが、それは他の方に譲ります。(^_^;)

superfighter823
質問者

お礼

 ご回答有難うございます。説明が不十分で申し訳ありませんでした。色んな本、サイトでINDEX+MATCH+INDIRECT関数を組み合わせた事例を探しましたが、見つかりませんでした。  VLOOKUP+INDIRECTはたまに使いますが、上記の3通りは使ったことがありません。  まる1日しても回答が得られなかったので削除か?と思っていましたが、返答いただき、感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで一覧表から検索

    ご教授をお願いします。 在庫表を作りたいと思っています。 sheet1に下記のようなデータの一覧表があります。 (AS400からデータを取り込みます) 納入日     品番   数量 20071010  1111-1111  1000 20071010  2222-2222  2000 20071011  3333-3333  2000 20071011  1111-1111  3000   ↓     ↓    ↓   以下続く・・・ sheet2に、         20071010  20071011 ・・・  1111-1111   1000    3000  ・・・            ↑     ↑   となるように↑矢印部に検索させる関数はないでしょうか? 10月中に在庫表を完成させなければなりません。 宜しくおねがいします。

  • エクセル、日付別に複数検索値からデーターを表示(VLOOKUP)させるには?

    資材部門に働いておりますが、月または週毎に独自で納品チェック表作成にVLOOKUP関数等を用いております。下記のような構成でデーターベースがあるのですが、日々、変更変動が激しく、該当日の車種のタイヤとその番号を表示させたいのですが、今までは日付を無視できたのですが、日付毎に分けなくてはならなくなり、上手くいかなくなりました。      A    B     C    D     1 日付   車種   部品   番号  2 4/3  ムーヴ  タイヤ  BS1  3 4/3  ムーヴ  タイヤ  TY2  4 4/3  タント  タイヤ  DL1  5 4/3  タント  タイヤ  BS2  6 4/3  エッセ  タイヤ  YH1  7 4/3  エッセ  タイヤ  YH2  8 4/4  タント  タイヤ  BS3  9 4/4  ムーヴ  タイヤ  DL3 10 4/5  ミ ラ  タイヤ  BS2 11 4/5  ミ ラ  タイヤ  BS1 12 4/5  エッセ  タイヤ  DL1 13 4/5  タント  タイヤ  TY2  ↓  ↓    ↓    ↓    ↓  従来は、この表からタイヤの番号を導くため、  =VLOOKUP(B2&C2,B2:C10000,3,0)の式を基本にIFなどをアレンジを加えて何とか、導けていましたが、日付が加わったのでどうすれば良いでしょうか?  VLOOKUP関数は同じ検索値だと最初の行だけが抽出されると言うのは知っています。  上記の表の構成で○月○日の○○車種のタイヤの番号を完全一致で表示させるにはどのような式を立てればよいでしょうか?私は時刻日付関数は苦手で、表示形式なども絡み、どうも理解が出来ておりません。  参考書をヒントに考えているのですが、IF,COUNTIF,INDEX,ROW,CORMINなどが複合されて長い式になり、頭で整理が付きません。  どなたか、教えていただけないでしょうか?  

  • エクセル 表検索した合計の出し方について

    既出でしたらすいません。 いろいろ検索していみたのですが見つかりませんでしたので、教えて下さい。というかできないのですかね? エクセル2007を使っているのですが、商品、単価、入り値を一覧の表にしてVLOOKUPでその一覧の番号から表検索して別の一覧を作れるようにしました。その新しい表の最後の行に単価と入り値の合計を出したいと思っています。ただ、その最後の行は一定ではなくどこになるかわかりません。(違う場所に合計用のセルを作るのではなくすでに関数がある場所に付け足したいのですが。。。) 以下がそのセルに入っている関数の例です。 =IF(I6="","",ROUNDDOWN(I6*F6+I6*IF(G6<10,G6/10,IF(G6<100,G6/100,G6/1000)),0)) I6にVLOOKUPで検索した単価が入るように関数を入れてあります。 F6、G6は数量を入力するようにしてあります。単価と数量の合計 この関数に付け加えるか、もしくは新しい関数でもいいので 「もし、A6に合計の文字列が入れば、I1~I5(合計の文字列が入る前のセル)までを足す」 というようなことができますでしょうか?

  • エクセル 一覧表からの検索

    入金表をつくるのに困っています。 クライアント 報酬金額 1回目    入金予定日     2回目  入金予定日・・・ A     100,000  20,000   平成23年8月3日  10,000   平成23年9月15日 B     100,000  100,000   平成23年9月7日   C     100,000  20,000   平成23年10月5日  10,000   平成23年10月25日 とクライアントごとに一覧表を作っています。 その表から月ごとに抜粋し他のシートに違う一覧を作りたいのですができますでしょうか? 例えば、9月で検索するとA社とB社のクライアント名と金額を抜粋し他のシートに作りたいです。 説明が下手で申し訳ございません。 いろいろ調べてみたのですが、分からなかったので聞いてみました。 宜しくお願い致します。

  • エクセルのVLOOKUP関数で…(複数条件?の抽出)

    ●シート2、A列に部品正式名称、B列に部品略称の一覧表(部品の種類は約500点) ●シート3、A列に略称、B,C,D,E,F,G列と続けて寸法などの詳細を記した一覧表 があります。 ●シート1に検索一覧表として、B列(B3~B8)は項目、セルC3~C8にVLOOKUPでシート3の情報が抽出されるようにしてあります。 C1で略称を入力し抽出するのはOKなのですが、正式名称で入力しても同じようにシート3の情報を抽出するようにしたいです。 (IFを使って思いつく関数を組合わせてみたりしたのですが、うまくいきませんでした(TT) できたら関数で何か良い方法ありますでしょうか? 宜しくお願いします。

  • エクセル 別シートから一覧を抽出したい

    部品一覧表を作成しているのですが、2シートあり 1入力シート・2部品コードシートとあります。 部品コードシートにはB列に部品番号・C列部品名・D列部品番号・E列部品名と2行ずつ使い番号・品名がB~Wまで47行分入力されています。 B1:C47、D1:E47…と2列47行にはそれぞれ【A】、【B】、…とセルの名前の定義をつけました。現在【H】までありますが、今後増える可能性があります。 入力シートに、セルの名前を指定したときに部品コードのシートから 一覧を抽出したいのですが、どの関数を使えばよいのかわかりません。 入力シート                 |部品コードシート G   H                  | A Bコード C部品名  Dコード E部品名 4式入力用にあけています。     |1 1800  ユニットA   1501 電源A 5コード 部品名             |2 1801  ユニットB   1502 電源B 6                       |3 G4に関数を入れてG6~G52まで部品コードのシートA1~A47を一気に表示 させたいのです。部品コードシートの行数が変わることはありません。 マクロを使わないと、関数では難しいでしょうか?

  • エクセルで複数の条件に基づき一覧表から数値を返す

    初めて質問させていただきます。 エクセルで二つの条件に基づいて一覧表から合致する値を返したいのですがうまくいきません。 Sheet1   A   B  C 1 4  7-9 1017 2 5  7-9 1137 Sheet2   A   B   C   D   E      1    2-3  3-5  5-7  7-9 2 1   229  301   576   660 3 2  300  400  678  776 4 3   371  499  779   897 5 4  442  598  880   1017 6 5   513  697  982  1137 このような表があった場合にSheet1のC1をA1とB1の入力値に応じてSheet2の表を参照して自動表示させたいのです。参照したい数値はSheet2のB2:E6のいずれかです。 Sheet1A1が4、B1が7-9の時はSheet2のE5の数値を返すといった具合です。 自分で作った数式もあるのですが、途中で[引数が多すぎます]といったメッセージが出てイマイチ使えませんでした。参考になるかは分かりませんが載せておきます。 Sheet1 C1=IF(AND(A1=5,B2="7-9"),Sheet2!E6,IF(AND(A1=4,B2="7-9"),Sheet2!E5,IF(AND(A1=3,B1="7-9"),Sheet2!E4,・・・この後も全ての数値をカバーしたかったのですが、4つくらいしか出来ませんでした。 うまくまとめきれなくて申し訳ありませんが、回答をよろしくお願いします。

  • EXCELファイルの一覧表形式での取込について

    EXCELで以下のような事を実現しようとしています。 まだマクロや関数等の知識が少なく、どう作っていけばいいのかよくわからないため、 教えていただけますでしょうか。 <やりたい事> ・図1の様なEXCELフォーマットに内容を入力し、別ファイルのEXCELシート(図2)に  一覧表の形で取り込む。・・・図2の一覧表で発注状況を管理。 ・新たに発注するような場合は、図1のフォーマット(シート)をコピーし、内容を入力。  →その都度 図2の一覧表に追加(最終行の後に追加)。 ・図1はブック形式で、発注日付毎にシートを分けて保存。図2へは、表示している  シートの内容のみ取り込む。(取り込みボタンを作る等考えています)。 ・空欄の場合は図2の一覧表には取り込まない。 ・図1と図2は別ファイル(リンクしないファイル)として保存。

  • 複数シートのセル値を参照してまとめて一覧表にしたい

    100あるシートの最後にまとめとして101のシートを作ります。 その101のシートにはシート1~シート100までのセル値を自動で参照したいのです。 例えばシート1のI6:名前、I10:売上、AQ13:原価、AB40:利益があり、それをシート101のまとめペー1ジの2行目に表示(参照)します。 101まとめページの3行目には同じセル番号のシート2のI6:名前、I10:売上、AQ13:原価、AB40:利益を反映。 101まとめページの4行目にはシート3のI6:名前、I10:売上、AQ13:原価、AB40:利益を反映。 このようにシート1から100までの同じセル番号の各シートのセル値を参照して一覧表にしたいのです。 お分かりにくい説明かもしれなくてすみません。 手作業でまとめシートに各セルに=で参照値をリンクするには大変な作業となりますので、何らかの良い方法があれば教えて頂けますでしょうか? よろしくお願い致します。

  • エクセルで外部ファイルから項目を引っ張り、一覧表(台帳)を作成したい

    エクセル形式の申請書を受領し、その一覧表をエクセルで作成したいと思っています。 申請書の形式は同じなので、名前、住所、性別などの項目を 1つ1つ一覧表にコピペすればよいのですが、 受領する度に1つ1つの項目を一覧表へ、貼り付けしなくてはなりません。 例: 申請書一覧表.xls 申請書01.xls 申請書02.xls 申請書03.xls 私が考えているやり方では、一覧表の例えばA1に申請書のファイル名(申請書01.xls)、 B1に申請書のワークシート名(sheet1)を入れれば、自動的に申請書の各項目を 一覧表の行(C1,D1,・・・)へ引っ張って来るような一覧表を作成したいと思っています。 これを実現するのに、一覧表のC1セルに、=INDIRECT("["&A1&"]"&B1&"!$C$3")  ・A1は一覧表上で申請書のファイル名(申請書01.xls)を記名したセル  ・B1は一覧表上で申請書のワークシート名(Sheet1)を記名したセル  ・$C$3は申請書01.xls内の参照項目の1つ(例:名前) で、実現をやってみましたが、 indirect関数は申請書のファイルを開いていないと出来ず、困っています。 申請書は1日に30件程度来て、一覧表だけを見て、例えば田中さんからは何件来ている とか、一覧表のみを見れば、申請書の全てが分かるように管理したいと思っています。 処理状況管理も一覧表で行いたいと思っています。 申請書一覧表.xlsは、申請書01.xlsよりも一段上のフォルダに置きたいと思っていますが、不可能なら、申請書と一緒のフォルダでも構いません。 また欲を言うと、一覧表から申請書をクリックで開けるようにできたら良いと 思っています。 良い実現方法がありましたら、教えてください。

専門家に質問してみよう