• 締切済み

Vlookupでキーワードを含む場合に任意の列を持ってくる

現在、仕事中で解決方法が見つからずとても困っています。 A、B2つのデータをぶつけて、 AにB側にある情報を持ってこうとしています。 具体的には、【A】のA列の右側に【B】の(B列)にある数字を 持ってきたいと思っています。 【A】        【B】 (A列)       (A列) (B列) アヒル商事       アヒル   10  イルカ物産       クジラ    5  カエル商事       イルカ    3 クジラ物産    カエル    6 シャチ商事 ・ ・ ・ もしからした、とても基本的な方法で出来るのかもしれませんが 分かりません。 お手数ですが、誰か助けてください!

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! すでに回答されていますが・・・ 実際、関数でやろうとすると出来そうでなかなか難しいですね! 無理矢理ですが ↓の画像のように表を作ってみました。 尚、データに一致する会社名がない場合とか、同じ文字列を含んでいても、別会社の場合はエラーになります。 例えば、「アヒル商事」と「(有)アヒル」という別会社があったとしても 最初の行に「アヒル」と出てきたものだけに表示されます。 まず元データに連番を付けておきます。 その番号を参照して、他の表から値を返すと言う方法です。 補助列のE2セルに =IF(F2="","",IF(COUNTIF($B$2:$B$1000,"*"&F2&"*"),INDEX($A$2:$A$1000,MATCH("*"&F2&"*",$B$2:$B$1000,0)),"")) としてオートフィルで下へコピーします。 そして、C2セルに =IF(B2="","",VLOOKUP(A2,$E$2:$G100,3,0)) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 尚、余計なお世話かも知れませんが・・・ オートフィルタで「○○を含む」でデータを抽出し その数値欄を範囲指定して、別表の数値データをコピー&ペーストすると言うのはダメでしょうか? 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

takataka16
質問者

お礼

tom04様 画像付きのご丁寧な回答と解説、ありがとうございます。 ご教授いただいた関数で見事に解決できました。 とても勉強になりました!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

解答No2ですがご質問の場合にはVLOOKUP関数を使うことはできません。 アヒル商事をアヒルに変えてならできますが、いろいろなケースを考えるとそれも難しいですね。 単にA列の文字列で最後の2文字をとった形でVLOOKUP関数を使うとしたら次の式をシート1のB1セルに入力し下方にオートフィルドラッグします。 =IF(A1="","",VLOOKUP(LEFT(A1,LEN(A1)-2),Sheet2!A:B,2))

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

基本的なことでできる内容ではないでしょう。 初めにAの表はシート1に、Bの表はシート2に入力されているとします。 そこでシート1のA1セルにアヒル商事と入力したとして、それをシート2で探す場合にアヒルとして探すのは簡単ではないですね。商事をとった文字列として探すのが一定のルールになっているのでしたらそれもよいのですが商事ばかりではなく物産とか多くのことが考えられますね。これから述べる方法はできるだけそれを避けようとした一つの方法と思ってください。 初めにシート2のA列にアヒルなどの文字列があり、B列に数値があるとします。そこでC列を作業列としてC1セルには次の式を入力して下方にオートフィルドラッグします。 =IF($A1="","",MATCH($A1&"*",Sheet1!$A:$A,0)) 式の意味ですがA1セルが空白ならば空白にして、そうでない場合にはA1セルの文字列を頭に持つ文字列のあるセルをシート1のA列で探し、その行番号を表示しなさいという意味です。 その後にシート1に戻ってB1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",INDIRECT("Sheet2!B"&MATCH(ROW(A1),Sheet2!C:C,0))) 式の意味はシート2のC列でシート1の行番号に一致する番号の行を求め、その行のB列における値を表示しなさいという意味です。

takataka16
質問者

お礼

KURUMITO様 ご回答ありがとうございました。 こちらの関数で見事に解決できました! 助かりました&感動しました! 本当にありがとうございました!

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.2

【A】【B】の(A列)での部分一致で検索したいとのことでしょうか? 部分一致を実現するより、【A】で作業列を設け【B】の(A列)と一致させることを目指すほうが解決に近づくと思う

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

申し訳ありません 何をしたいのか、具体的に示してください または、正確な日本語で伝えてください 質問が曖昧な言葉で綴られているので、理解に時間がかかります と言うか理解不能です  A群,B群二つのデータを比較して?  A群と等しいB群側の文字を表示させたい と言うことでしょうか …普通に VLOOKUP関数でできますよ? たぶんできないので質問をされているのでしょうが、 ・何が分からないのか ・どのようにしたら、どんな結果になったのか を示すだけでも 解決の糸口を見つけることができると思います 仕事であれば、他の人に課題を依頼するために最低でも必要な情報を伝えるようにしましょう 少なくとも投稿された質問文だけでは解決できないと思います

takataka16
質問者

お礼

Cupper様 ご指摘ありがとうございました。 かなり焦っていたため、分かりずらい質問内容となってしまいました。 失礼いたしました。

関連するQ&A