- ベストアンサー
エクセルの関数
初心者の質問で、わかりにくくてごめんなさい。 LOOKUPみたいに、参照する表から値をひっぱって くる様にしたいのですが、参照する表の値の一部にその文字があったらそれをひっぱってくる様にするにはどうしたらよいのでしょうか? 例:参照の表のセル→ABC502 となっていて、ひっぱってくるセルに「502」と入力したらその横に「ABC502」と表示したいのです。 LOOKUPだと、○○の時は××という風に、まったく同じ値じゃないとだめですよね? 質問自体がわかりにくくて大変申し訳ないのですが、教えて下さい!!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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)
FIND関数を使ってみてはいかがでしょうか。LOOKUP関数とかIF関数にネストする場合にはやや制限があるかもしれませんが、データベース関数などよりは使いやすいように思います。
- ARC
- ベストアンサー率46% (643/1383)
DGet関数を使うとか。 A列にデータが入ってるものとします A1に ID と入力してA2以下にデータがあって、その中にABC502ってデータも含まれているものとします。 まず、E1に ID と入力 E2に *502* って入力します で、適当なセルに =DGet(A:A,1,E1:E2) って入れたら、ABC502(もしくは"502"を含む最初のデータ)が取り出せるはずです。 余分なセルを使いたくないなら、VBAでプログラミングしてもいいかも。 参考URLに、以前私が作った自作関数が載ってます。 こっちについてもサポートしますんで、質問等あったら補足欄にお書きください。
- comv
- ベストアンサー率52% (322/612)
こんばんは! 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),"なし")
お礼
回答ありがとうございます!! DGet関数って知りませんでした。 自作の関数があるってすごいですね!! 参考URL、見させていただきます。 また何かあればよろしくお願いします!