複数条件でのVlookupができるのか?

このQ&Aのポイント
  • Vlookupを複数条件で使用できるかどうかについて調べています。
  • 例えば、両ファイルで名前と電話番号が一致するデータのみを抽出して、Newファイルの会員番号を取得する方法が知りたいです。
  • Dget関数は調査したが、詳細が分からず、Vlookupなどを使用して解決することを望んでいます。
回答を見る
  • ベストアンサー

複数条件でのVlookup

Vlookupなのですが複数条件でも使えるのでしょうか? たとえばふと津のファイルを比較し、違いの部分を抜き取る作業をするとします。 一つのファイルでは A       B C 名前    電話番号 会員番号 佐藤    000-000-00  21 田中    111-111-11 22 池田    222-222-22 33 もう一方のファイル(Newファイルとします)で 佐藤   000-000-11 55 田中   111-111-11 22 池田   222-22-33 44 vlookup で名前だけ一致するものを選び、Newファイルの会員番号を返すようにすると、佐藤、田中、池田が全てえらばれてしまい、会員番号として、55,22,44が帰ってきてしまいます。 しかし、両ファイルで名前と電話が一致するものを選びNEWファイルの会員番号を返すならば、 田中だけの会員番号が帰ってくるとおもいます。 複数条件のVlookupというのはできないのでしょうか? Dget関数というのをしらべましたがいまいちよくわからずvlookupとかでできればいいなと思うのですが。 教えてください。  

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

  • ベストアンサー
回答No.4

>E列が画像にないのですが。。 D列の右の列がE列。。。 >エクセルに詳しくないため、もう少し教えていただけますか? http://office.microsoft.com/ja-jp/training/RZ006107930.aspx >>=IF(OR(E2="",F2=""),"", 単純なエラー処理 >>IF(COUNT(1/(($A$2:$A$10=E2)*($B$2:$B$10=F2)))=0,"", (この部分は回答直後にイマイチな考えだと思ったけど、) 名前と電話番号が合致すると数値となるので、数値がないなら空白にする >>INDEX($C$2:$C$10,MATCH(1,($A$2:$A$10=E2)*($B$2:$B$10=F2),0)))) 両方が合致すれば1を返すので、その最初の1の行番号をMATCHで返すことで、INDEXで対応する会員番号を返す。 配列数式講座 http://pc.nikkeibp.co.jp/pc21/special/hr/ >下へオートフィル 選択セルの右下にマウスポインタを合わせた時に出る黒十字(フィルハンドル)を下方へドラッグすること。 一応、簡単な説明はしましたが、オートフィルという言葉自体がわからないほどの初心者なら keithinさんの最初の回答の案(前半のVLOOK案)をお勧めします。 作業列は非表示にしておけばよいし、配列案より計算速度も格段に速い。 当方が作る場合も作業列を使う。ただ、気分的に作業列は端におきたいのでINDEXとMATCH関数を使うだろう。 http://www.moug.net/learning/exjob/exjob006-1.html

kimi1980
質問者

お礼

たびたびの回答ありがとうございました。 勉強します。

その他の回答 (3)

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

ん??? >何をしている式でしょうか? 何をしてるって,そりゃ勿論アナタがご質問された「複数条件で抽出して値を取ってくる」をやってるにきまってるじゃないですか。関係ない雑談をしてるワケじゃありません。 回答は(SUMIFS関数やSUMPRODUCT関数で出来ますよ,とかじゃなく)一応コピーだけすれば計算できるようにしておきましたが,数式が難しくて目が回ってしまい全然先に進めないのでしたら,最初の最初に回答した方法で,アナタのご存じなVLOOKUP関数を使ってコタエを引っ張ってくる手順を強くお薦めします。

kimi1980
質問者

お礼

回答ありがとうございます。 エクセルの式の理解に戸惑っていました。 勉強します。 ありがとうございました。

回答No.2

keithinさんの案の前半をお勧めします。 その上で半分遊び案(重複がある時、上の行優先) G2セルに =IF(OR(E2="",F2=""),"", IF(COUNT(1/(($A$2:$A$10=E2)*($B$2:$B$10=F2)))=0,"", INDEX($C$2:$C$10,MATCH(1,($A$2:$A$10=E2)*($B$2:$B$10=F2),0)))) [Ctrl]+[Shift] +[Enter] で確定、配列数式です({}で囲まれる) 下へオートフィル E:F列を切り取り、別シートへ貼り付け

kimi1980
質問者

お礼

回答ありがとうございます。 式の意味とこれは何をしているのでしょうか? E列が画像にないのですが。。 エクセルに詳しくないため、もう少し教えていただけますか? あと >下へオートフィル とありますが、、これはろういうことでしょうか。。。 教えていただければ幸いです。

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

いいえ。VLOOKUP関数はひとつの検索値でしか値を持ってこれません。 なので違う関数を使ったり違う方法で,欲しい結果を得られるように工夫します。(もちろん,「諦める」という選択肢もありますが) 簡単にできることその1:検索条件を「1つ」にしてしまう Sheet1:元リスト A列 B列 C列    D列 名前 電話 名前+電話 会員番号 佐藤 1234 佐藤_1234  21 上野 5678 上野_5678  22 遠藤 2231 遠藤_2231  23  : C2: =A2&"_"&B2 以下コピー こういった具合に「名前+電話」で一つのデータを作ってしまえば,「名前+電話」でいつものVLOOKUP関数も簡単に利用できます。 検索シート A列 B列 C列 名前 電話 会員番号 上野 5678 =VLOOKUP(A2&"_"&B2,Sheet1!C:D,2,FALSE) VLOOKUP以外の難しい方法:ご利用のエクセルのバージョンに応じて,また具体的なデータの内容に応じて,VLOOKUPではなく違う関数を利用します。 #ご利用のソフトのバージョンに応じて,出来ること出来ないこと具体的な操作の手順が変わる場合があります。 ご相談投稿時には,ご利用のソフト名は当然として,ご利用のソフトのバージョンまでしっかり明記することを憶えてください。 ★会員番号がご質問で書かれているように「数値」である場合 ○Excel2007以降を利用している場合 上述例検索シートのC2: =SUMIFS(Sheet1!D:D,Sheet1!A:A,A2,Sheet1!B:B,B2) 応用: =IF(COUNTIFS(Sheet1!A:A,A2,Sheet1!B:B,B2)=1,SUMIFS(上述の通り),"") ★会員番号が数値ではなく「文字列」である場合 C2: =IF(SUMPRODUCT((COUNTA(A2:B2)=2)*(Sheet1!A$1:A$10=A2)*(Sheet1!B$1:B$10=B2)),INDEX(Sheet1!D:D,SUMPRODUCT((Sheet1!A$1:A$10=A2)*(Sheet1!B$1:B$10=B2)*ROW(Sheet1!D$1:D$10))),"")

kimi1980
質問者

お礼

回答ありがとうございます。 エクセルのバージョンは2010です。 後半の =================================== ○Excel2007以降を利用している場合 上述例検索シートのC2: =SUMIFS(Sheet1!D:D,Sheet1!A:A,A2,Sheet1!B:B,B2) 応用: =IF(COUNTIFS(Sheet1!A:A,A2,Sheet1!B:B,B2)=1,SUMIFS(上述の通り),"") ★会員番号が数値ではなく「文字列」である場合 C2: =IF(SUMPRODUCT((COUNTA(A2:B2)=2)*(Sheet1!A$1:A$10=A2)*(Sheet1!B$1:B$10=B2)),INDEX(Sheet1!D:D,SUMPRODUCT((Sheet1!A$1:A$10=A2)*(Sheet1!B$1:B$10=B2)*ROW(Sheet1!D$1:D$10))),"") ====================================================================== は何をしている式でしょうか? 教えていただいければ幸いです。

関連するQ&A

  • エクセル 複数 検索 したい

    背番号 名前  結果 A B   C --------------------------------------------- 1 10 田中 三振   2 07 佐藤 ホームラン 3 15 杉田 ヒット 4 07 佐藤 三振 5 03 伊藤 デットボール 6 7 8 9 --------------------------------------------- 7Aに10と背番号を入力したら 8Aに田中、8Bに三振 が出るようにしたいです。 VLOOKUPでやると 8A=VLOOKUP(7A,A1:C5,2,1)  10のように条件が1つの時は検索出来るのですが、 例えば、 検索が07 のように2つ以上になると出来ません。 8Aに佐藤 8Bにホームラン 9Aに佐藤 9Bに三振 としたいのですが、どのようにすればよろしいでしょうか? 頭が、パンクしそうです。出来ればアクセスは 使いたくないというか、あまり使えません。すみません。

  • 複数条件でVLOOKUPのような事はできませんか?

    複数条件でVLOOKUPのような事はできませんか? 例えば <シート1> コード 名前 部屋 間取り 1  あああ 101 1LDK 1  あああ 203 2LDK 1  あああ 105 1LDK 2  たたた 201 1R 2  たたた 202 1DK 3  さささ 303 2DK ※シート1は、コード列の昇順に並んでいます <シート2> コード 部屋 間取り  3  303 1  203 2  202 2  201 ----------- シート2の間取り列に、 シート2:コード & シート2:部屋と一致するものをシート1から探し出し、シート1:間取りの情報を表示したいのです。 補足。 (1)シート1に該当するコード、間取りがない場合が稀にあります。その場合はブランクを出したいです。 (2)シート1、シート2の内容は追加されて行くので範囲を選択する事が出来ません。 その為、名前を取得する時はVLOOKUP関数を使用しているのですが、 VLOOKUP(A7,Sheet1!$A:$B,2,0) (IFとISERROR関数でエラー回避してます)。 このように、範囲を列ごと指定してます。 (3)のデータ件数が5000件くらいあります。 VLOOKUPに拘っているわけでは無いので なにか関数で、対応できる方法があったら教えて下さい。 わかり難くてすみません。 非情に困っています。どうぞよろしくお願いします。

  • Vlookupの使い方

    下記のような写真の図でVlookupは使えるのでしょうか? たとえば 検索列が一番左になく、vlookupで文字が一致した場合、その列より左にある列の文字を返すというのは可能なのでしょうか? たとえば   A B     C D No 順位  名前  売上 1   4   佐藤  5 2   3   加藤   6 3   2   木村   7 4   1   小暮   8 名前でVlookupで一致した人の順位を表示する、などできるのでしょうか? 教えてください。 下記のエクセル図でどのようにすればいいでしょう? 施設名で検索し、一致した施設のNoや順位の列を表示することは可能でしょうか? Vlookupで無理な場合、何かやりかたがあるでしょうか? 教えてください

  • VLOOKUPが効かない(>_<)

    昨日出来たVLOOKUPの作業が今日は出来なくなりました。 そんな事ってありえますか? 使用するデータは異なりますが、VLOOKUP関数の条件部分は全く変えてません。 一致しない場合のエラー表示もなく、セルには関数式が表示されるだけです。 仕事とで息詰まって残業しています。どなたかお助けを~”(ノ><)ノ (課題内容) シート1には電話番号 シート2には電話番号と月額使用料 VLOOKUPで1と2を付け合わせ電話番号が合致する場合はシート1に月額使用料を記載したいです。

  • エクセルで2つの条件を元に

    エクセル2007で名簿を作っています。 1ヶ月ごとにメンバーの順が変わります。 シート1(番号順に名簿を作りました)   A  B   C  1 1     山田 2 2     木村 3 3 副長 佐藤 4 4     鈴木 5 5 班長 田中 6 6     長田  シート2(こちらがメンバーに配る名簿です)   A   B  C   D 1 班長    1    3 2 田中    山田  鈴木 3 4 副長    2    4 5 佐藤    木村  長田 A2に田中,A5に佐藤を選んでくるのはvlookupで成功しました。 質問したいのは C列D列に上記の番号のようにシート1の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。  

  • 複数のシートのセル内容をひとつにまとめたい

    複数のシートのセル内容をひとつにまとめたいと思っています。 Sheet1        Sheet2      Sheet3 1 山田 ¥100  1 山田 ¥80  3 鈴木 ¥80 2 佐藤 ¥130  2 佐藤 ¥55  4 田中 ¥150 3 鈴木 ¥110  4 田中 ¥60 こんなデータを Sheet4 1 山田 2 佐藤 3 鈴木 4 田中 とまとめたいんです。 金額は必要ないので、番号と名前だけをまとめたいんです。 どうすれば良いか、教えてください。 よろしくお願いします。

  • ACCESS 複数フィールド下・同一条件でその都度条件を変えて表示したい

    初心者になりますので、基本的かもしれない質問をしますが、検索して見つからなかったので質問をさせて頂きたいと思います。よろしくお願い致します。 ACCESSでシステムを作成する途中で困っています。 複数のフィールドの同一人物のデータを、その都度条件を出して(リストボックス等で)フィールドに表示したいと思っています。 条件はあくまで「1つ」ですが、複数フィールドにまたがる条件の為、どのように表示をさせる方法があるのか迷っています。 データ元は、以下のようなクエリになっております。 【 データ元:クエリ1 】 コード   担当者(1) 担当者(2) 111   田中   佐藤  112   山田   田中 113   佐藤   鈴木 114   鈴木   山田  ・・・      【 表示 】  EX:「田中」を選択した場合 コード   担当者(1) 担当者(2) 111   田中   佐藤  112   山田   田中 ★ 田中が入力されているデータのみ表示する ★ ただし複数のフィールド下で検索する 今まではクエリの抽出条件に直接「田中」などを入力していましたが、数が増えた為その都度条件を入れないといけません。そこで、フォームで担当者を選択することによって、担当者の該当するデータを一発表示できるようにしたいと考えております。 勉強不足で方向性が見えていない状況です。よろしくお願い致します。

  • VLOOKUPでお願いします

    VLOOKUPは初めてです。 (シートA)     A       B     C  1  コードNO.   名前   電話番号 2  0011112    佐藤   1111-3333 3  0022222    鈴木   1234-5544 4  1155444    山田   5566-1133 5  0333777    山下   8877-4477 (シートB)     A       B     C  1  コードNO.   名前   電話番号 2  0022222     3  0333777    シートAが元データです。 シートBのA列に他からコピーしたコードNO.を貼り付けると自動的に シートAからに該当する名前と電話番号をシートBのB列C列に表示させる。 どうか宜しくお願いいたします。

  • EXCEL 複数条件(VLOOKUP?)について 

    EXCEL 複数条件(VLOOKUP?)について  シート1 A列 B列 C列 D列     名前 日付 色  サイズ(数値) シート2 A列 B列 C列 D列     名前 日付 色  サイズ(数値) シート1とシート2のD列を比較させて違う場合をシート1の別の列に表示させたいのですが、 現在はA,B,Cを連結し、VLOOKUPにて処理しています。 今後件数が5000件を超える予定となっており、このままではPCが止まってしまう恐れがあるので 別の方法を模索しているのですが、何か良い方法はないでしょうか?

  • VLOOKUP関数について

    社員名簿からA2佐藤という名前を入力したらに自動的にA1に社員番号1が出るようにしたいのですが、 その反対ならできます。例えばF12に社員名佐藤さんをいれて G12に社員番号1を入れたとします。3つくらい練習問題として伊東 2 山田3などとつくりました。私が出来たのはA1に1と入力したら佐藤とでるようにはできました。式はこちらです。=VLOOKUP(B1,$F$12:$G$14,2,0) しかしやりたいのはA2に社員名 佐藤と名前を入力してA1に社員番号 1を表示させたいのです。すごく困っています。よろしくお願いいたします。

専門家に質問してみよう