• ベストアンサー

エクセルの関数

初心者の質問で、わかりにくくてごめんなさい。 LOOKUPみたいに、参照する表から値をひっぱって くる様にしたいのですが、参照する表の値の一部にその文字があったらそれをひっぱってくる様にするにはどうしたらよいのでしょうか? 例:参照の表のセル→ABC502 となっていて、ひっぱってくるセルに「502」と入力したらその横に「ABC502」と表示したいのです。 LOOKUPだと、○○の時は××という風に、まったく同じ値じゃないとだめですよね? 質問自体がわかりにくくて大変申し訳ないのですが、教えて下さい!!

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

  • ベストアンサー
  • brogie
  • ベストアンサー率33% (131/392)
回答No.3

comvさんの補足です。 B列に参照値が複数入っているときは、C列の数式セルをドラグして、コピーするときに、A列の参照の表が、ずれて来ます。これを防ぐためには、絶対指定をしなくてはなりません。 関数ウィザードを使って絶対指定するときは、F1キーを押してください。 修正した式です。 =IF(COUNTIF($A$1:$A$5,"*"&B1&"*"),VLOOKUP("*"&B1&"*",$A$1:$A$5,1,0),"なし") 絶対指定は$マークを付けます。 "*"&B1&"*"は、セルB1の前後に任意の文字列も含みます。&は結合記号です。*は任意の文字列です。 すでに、ご存知とは思いますが、老婆心ながら(^^;

その他の回答 (3)

  • yuhki_f
  • ベストアンサー率32% (32/99)
回答No.4

FIND関数を使ってみてはいかがでしょうか。LOOKUP関数とかIF関数にネストする場合にはやや制限があるかもしれませんが、データベース関数などよりは使いやすいように思います。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

DGet関数を使うとか。 A列にデータが入ってるものとします A1に ID と入力してA2以下にデータがあって、その中にABC502ってデータも含まれているものとします。 まず、E1に ID と入力 E2に *502* って入力します で、適当なセルに =DGet(A:A,1,E1:E2) って入れたら、ABC502(もしくは"502"を含む最初のデータ)が取り出せるはずです。 余分なセルを使いたくないなら、VBAでプログラミングしてもいいかも。 参考URLに、以前私が作った自作関数が載ってます。 こっちについてもサポートしますんで、質問等あったら補足欄にお書きください。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=35559
wonder
質問者

お礼

回答ありがとうございます!! DGet関数って知りませんでした。 自作の関数があるってすごいですね!! 参考URL、見させていただきます。 また何かあればよろしくお願いします!

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんばんは! 1例を    A   B   C 1 AAA501 502  数式 2 BBB505 3 CCC555 4 ABC502 5 ABB503 B1が参照値の入力セルとして C1の数式 =VLOOKUP("*"&B1,A1:A5,1,0) ただし通常のVLOOKUPと同様に  ・存在しない場合、#N/A エラーになります。  ・条件に合うセルが複数ある場合、上行が優先となります。 エラーを避ける為には予め存在をチェックする数式が必要です。 例) =IF(COUNTIF(A1:A5,"*"&B1),VLOOKUP("*"&B1,A1:A5,1,0),"なし")

関連するQ&A