EXCEL関数:2つの条件から1つの値を取得する方法

このQ&Aのポイント
  • EXCELの関数を使用して、2つの条件のうちの1つに一致する場合に、他のセルの値を取得する方法を教えてください。
  • 具体的な質問の内容は、Sheet2に名簿があり、Sheet1で名前かニックネームを入力すると、該当する人の登録番号が表示されるようにしたいというものです。
  • VLOOKUP関数を使用して試みたが、2つの条件のどちらかに一致する場合に値を取得する方法がわかりません。他の関数や方法を教えてください。
回答を見る
  • ベストアンサー

EXCELの関数:2つの条件から1つの値をひっぱってきたいんですが・・・

EXCELの関数の使い方を教えてください。 ・Sheet2に元になる名簿(名前、ニックネーム、登録番号)が一覧になったものがあります。 ・Sheet1に、名前かニックネームのどちらかを入力したら、その人の登録番号が自動的に表示されるようにしたいんです。 ・元の名簿にのってない人は、未登録だとわかるように空欄にするか、*マークをつけたいです。 例えば、Sheet2の名簿のセルB2「山田花子」セルC2「はな」セルD2「No.32」とあって、新しいリストを作るSheet1のセルB2に「山田花子」もしくは、「はな」のどちらかを入力すれば、C2に「No.32」とひっぱってくるようにしたいんです。。。 VLOOKUP関数を使って頑張ってみてるんですけど、 2つの条件のうちのどちらかに一致すれば・・・ ってゆうのを作るにはどうしたらいいのかで固まってしまいました。 何かほかの関数と組み合わせたらいいんだろうと思うのですが、まったくわからないので、助けていただけませんか? よろしくおねがいします。

noname#19824
noname#19824

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

  • ベストアンサー
  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.3

こんばんは =VLOOKUP(B2,Sheet2!B2:D10,3,FALSE) ← A とします =VLOOKUP(B2,Sheet2!C2:D10,2,FALSE) ← B とします 関数が組み合わさっていて理解しづらい時には 分解して、一つ一つの結果を検証するのが早道だと思います。 とりあえず上記2つの式をお試し下さい。 B2に入力されたものによって正しい結果が出たり エラーが出たりするはずです。 IF(ISERROR(VLOOKUP(B2,Sheet2!B2:D10,3,FALSE)) はじめのIF式の倫理式 (1) IF(ISERROR(VLOOKUP(B2,Sheet2!C2:D10,2,FALSE)),"*",VLOOKUP(B2,Sheet2!C2:D10,2,FALSE))  はじめのIF式の真の場合(2) VLOOKUP(B2,Sheet2!B2:D10,3,FALSE) はじめのIF式の偽の場合 (3) 初めのIF式でエラーになるなら (1) (2)の処理へ 初めのIF式でエラーにならないなら (1) (3)の処理へ (1)がエラーにならないなら(3)は正しく抽出されるはずなので。 (2)の処理も細かく分けて考えます。 IF(ISERROR(VLOOKUP(B2,Sheet2!C2:D10,2,FALSE)) 2つめのIF式の倫理式(2-a) "*"  2つめのIF式の真の場合 (2-b) VLOOKUP(B2,Sheet2!C2:D10,2,FALSE) 2つめのIF式の偽の場合 (2-c) 2つめのIF式は初めのIF式(1)がエラーの場合なので (2-a)がエラーということは一番上のA、Bの式共にエラーになるはずです つまり、該当なし。 なので、(2-a)がエラーならば (2-b)で * を表示させます。 (2-a)がエラーで無いならば Aはエラー、Bは正しい結果の返る式になるので 正しい結果を返す事の出来る式 (2-c)で使うようにしています。 といった感じですがご理解頂けますでしょうか? >簡単にでも結構ですので、式の解説をお願いできないでしょうか? 簡単ではなく、余計に難しくなってしまったかもしれないですね エヘヘッ (^-^)ゞ ポリポリ

noname#19824
質問者

お礼

お礼が遅くなってしまって、申し訳ございません。 大変丁寧なご説明ありがとうございました。 なんとか理解することができました。

その他の回答 (2)

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.2

こんばんは Sheet1の任意のセルに =IF(ISERROR(VLOOKUP(B2,Sheet2!B2:D10,3,FALSE)),IF(ISERROR(VLOOKUP(B2,Sheet2!C2:D10,2,FALSE)),"*",VLOOKUP(B2,Sheet2!C2:D10,2,FALSE)),VLOOKUP(B2,Sheet2!B2:D10,3,FALSE)) としては如何でしょうか?

noname#19824
質問者

お礼

kaisendonさん、ご回答ありがとうございます。 教えていただいたとおりに式を入力したら、出来上がりました!! 本当に助かりました♪ ありがとうございます。 でも、式の意味を理解できないまま、 教えていただいたものをそのままコピーするようなかたちで 式を完成させたので、どうしてこうゆう式になるのかわかりません。 もしよろしければ、簡単にでも結構ですので、式の解説をお願いできないでしょうか? あつかましいお願いですみません。 面倒に感じられましたら、そのままにしておいてください。 よろしくお願いします。

  • takuranke
  • ベストアンサー率31% (3923/12455)
回答No.1

=MATCH (検索値,範囲,照合の方法) で出来ると思います。

参考URL:
http://arena.nikkeibp.co.jp/lecture/20040322/108253/
noname#19824
質問者

お礼

takurankeさん、ご回答ありがとうございます。 MATCH関数についてよく知らないので、教えていただいたサイトを参考に勉強してみます。

関連するQ&A

  • エクセル IF関数を教えて下さい。

    エクセル初心者です。関数を教えて下さい。 IF関数でできるのかも解りません。 A組 番号1 山田 花子 A組 番号2 河崎 洋子 B組 番号1 高木 健太 セルA2にA1と入力するとセルB2に山田花子、セルA3にB1と入力するとセルB3に高木健太と自動的に表示する方法を教えて下さい。 IF関数でできるのでしょうか?

  • エクセルの関数による条件分岐について

    単刀直入で申し訳ないですが、 Sheet1に下記の表を作成し、 青   100   B 青   300   B3 赤   200   A2 白   400   C5 青  (空セル) D 白   100   AA 白   100   B 青   400   D3 青   200  (空セル) Sheet2ではSheet1の列が『青』の行だけ上詰めで表示するような エクセル表を作成しようとしています。 具体的には、 『もしSheet1が青ならばSheet2で青の行を表示しかつ上に積める、もし青以外であればSheet2ではその行は表示しない、もしセルが空欄であればSheet2では「未記入」と表示させる。』 といった感じの動作をさせたいのです。 Sheet1の表に上記の値を入力すると、Sheet2では関数を用いて結果的に以下のような表が完成するようにしようと思っています。 青   100   B 青   300   B3 青   未記入  D 青   400   D3 青   200  未記入 ------------------------------------------------------------- また、これとは別なのですが、電話表を作成するにあたって、 SheetAに『名前、電話番号』の元データを入力しておき、 SheetBで名前を入力すると自動で電話番号が横のセルに表示され、 かつSheetAの元データにない電話番号が入力されると、「登録者なし」 と表示する。ようにするにはどのような方法があるでしょうか? AND関数で元データの人の名前を全通り入力し、そうでなければ「登録者なし」と表示するといったものを作成したのですが見た目が悪い上に、同じ箇所でAND関数を繰り返し使うには回数限度があるようで、登録者が多いと使えません。 一度にたくさんの質問で申し訳ないのですがもしよろしければご回答宜しくお願い致します。

  • エクセルで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の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。  

  • エクセル:マクロでこんなことはできますか?

    【シート1】に名簿があります。 1 山田太郎 | ○○市○○町 | 電話 ・・・・ 2 山田花子 | ○△市  |・・・ といった一般的なものです。 【シート2】は、データ入力用としています。 A2~A4の3つを結合し、シート1から”山田太郎”を参照(INDIRECT関数使用) A5~A7の3つを結合し、同様に山田花子を参照 B2,B3.B4、C2,C3,C4は必要データを入力しています。 ★やりたいこと 【シート1】の山田太郎(1行すべて)を削除したときに、 【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除したい。 以上です、よろしくお願いします。

  • エクセル2013関数について

    エクセル2013について教えてください。 sheet1には出席者の名簿一覧を入力しています。 sheet2には支払い済の人の名前を入力しています。 sheet1の名簿の横に sheet2の支払い済みが分かるように『○』を表示させたいのですが エクセル初心者のため、関数がよくわかりません。 詳しい方、わかりやすく教えていただけませんでしょうか。 ちなみに sheet1のC7~C600まで名前が入力してあり E7~E500に『○』を表示させたいです sheet2はA2~A500まで名前が入力してあります 分かりづらく申し訳ありません

  • エクセルの関数?

    自分の力では解決できませんでしたのでお力添えください シート1にはお客様への送付状 シート2には郵便番号・住所・お客様名 のエクセルがあります。 シート1のあるセルにお客様の登録ナンバーを入力するとシート2から自動的に「郵便番号・住所・お客様名」がシート1に反映するような関数を知りたいのです 宜しくお願い致します

  • エクセルで条件を満たすものを抽出させる(関数で)

    シート1にタイムを計った一覧があります。    A   B   C 1 山田   2  3.5 2 田中   5  4 3 根岸   2  2.3 4 村井   5  3 5 鈴木   5  3 シート2には社員名簿があります。社員は増減があるため更新したら、それも反映させたいです。   A   B    1 山田 社員 2 根岸 社員 3 村井 社員 そして、シート3に社員で、かつB列が2の情報だけを表示させたいのです。    A   B   C 1 山田  2   3.5 2 根岸  2   2.3 シート3にはどのような関数を入れたらよいのでしょうか?? よろしくお願い致します。 ちなみにVistaです。  

  • エクセルでこんな事をしたいのですが、関数をどう使えばできるのかわかりません

    下記のような名簿表を作っています。 この名簿リストに書いてある人全員に郵送します。 しかし、ここで問題になっているのが、家族の人が違う行になっているため、同じ所に同じ資料が郵送されてしまいます。 そこで、同じ苗字で同じ住所の人を抽出したいのですが、どう関数を使ったらできるのでしょうか? A 名前    B 郵便番号  C 住所  大槻 太郎    999-9999 東京都渋谷区1  大槻 花子    999-9999 東京都渋谷区1  岡崎 太郎    998-9999 東京都品川区2  加藤 花子    998-9999 東京都品川区2  山田 太郎    990-9999 東京都台東区3  山田 花子    999-9999 東京都渋谷区2 例。上記の場合、大槻さんだけ抽出したいです。 扱っているデータが4000件ぐらいあって手作業では苦です。 助けてください!

  • Excel : データを部分一致で参照したい

    こんにちは。 部分一致の方法をご存知でしたら教えてください。 以下のような二つのシートがあります。 <シート1> セルA 山田太郎 木村次郎 佐藤花子 <シート2> セルA  セルB    セルC 山田  太郎  03-1234-5678 木村   次郎  03-****-***** 佐藤   花子  03-****-***** シート1にシート2の電話番号を参照して表示させたいのですが、 シート2には苗字と名前が別のセルになっていて、 完全一致ができません。 シート2に1セル足して、苗字名前を両方表示させてもいいのですが、 できるだけ、シート2はいじらずに、苗字だけ一致させるか、あるいは二つのセル(苗字と名前)を参照して、シート1に電話番号を表示させる方法さがしていますがうまくいきません。どなたか詳しい方がいらっしゃいましたら、ご教示いただけませんか。よろしくお願い致します。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。