[[20121011161835]] 『別のシートから該当するデータを引っ張ってくる』(MONY) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別のシートから該当するデータを引っ張ってくる』(MONY)

A、B 2つのシートに住所録があります。
Aは元データで膨大な数の得意先が登録されており、Bは限られた得意先のみです。
Aには顧客の電話番号が入力されており、Bには入力されていません。

BのシートにAのデータを効率よく引っ張ってこられるような方法がありますか?

これができたらとても時間短縮ができるのですが・・・
宜しくお願い致します。

(MONY)


 VLOOKUP関数は使えませんか?
https://www.excel.studio-kazu.jp/func/vlookup.html
 (e1t) VLOOKUP 別シート版

 (HANA)

HANAさん

ありがとうございました。VLOOKUPの使い方が良くわからないので上記を参照してみましたが、一つずつ入力していかないとならないのですよね?

(MONY)


住所録がAシート(仮にSheet1という名前のシート)で、
 [A] [B] [C]
得意先 住所 電話番号
得意先1 住所1 03−3309−xxx1
得意先2 住所2 03−3309−xxx2
得意先3 住所3 03−3309−xxx3
得意先4 住所4 03−3309−xxx4

こんな形のものなら、Bの方で、

 [A] [B] [C]
得意先 住所 電話番号
得意先1 住所1 =VLOOKUP(A2,Sheet1!$A$1:$C$100,3,FALSE)
得意先2 住所2
得意先3 住所3
得意先4 住所4

C2に上記のように入力したものをコピーして貼り付けしていきます。
(みやほりん)


みやほりんさん

関数を入力しようと頑張っていますが、よく分かりません・・・
ド素人なので、スミマセン・・・

検索値はSheet1(仮に)ということは分かりました。
でも表示が″Sheet1!"になってしまいます。

次の範囲のところが、きっとドルみたいなマークがついているA1〜C100(仮に)なのだろうと思うのですが、私が指定するとSheet2!A2:M357となってしまい、列番号を指定すると#N/Aのエラーが出てしまいます。

どこが違っているのでしょうか?

(MONY)


 >どこが違っているのでしょうか? 
 完成した式を載せて見られては?

 >#N/Aのエラーが出てしまいます。
 VLOOKUP関数を使用して、#N/Aエラーが出るのは
  ・検索値が検索範囲にない
  ・範囲で指定した列数以上の値を列番号で指定している
 事が多いと思います。

 データがそれぞれどのようになっているのか
 具体的にサンプルデータを書いておかれるのが良いと思います。

 情報が少なく、色々な事が考えられてしまうので。。。

 そちらの情報を載せるのが憚られるなら
 まずは、みやほりんさんが書いて下さっているのと同じ表を作って
 同じ数式を入れて確認してみると良いかもしれません。
 仕組みがわかるのではないかと思います。
 その後、実データとの相違点を書いてもらえると、伝わりやすくなるかもしれません。

 (HANA)

HANAさん みやほりんさん

ありがとうございます。数式を手で入力したら何とかできました。
返ってくる数が少ないのですが、ゼロよりましです。

どうもありがとうございました。

(MONY)


 返ってくる数が少ないのは
  1.そもそもSheet1に情報が無かった
  2.Sheet1に情報があるハズなのに、表示されない
 どちらでしょう?

 後者であれば、なぜ表示されないのか
 探ってみられるのが良いのではないかと思いますが。。。

 (HANA)


HANAさん

1と2の両方ありました。
2は、表示させたいシートでは「株式会社○○○」となっており、検索側では「(株)○○○」や「\x{fffd}梶宦宦宦v「株式会社 ○○○」など様々な表記になってしまっていて引っかからなかったようでした。
なので、\x{fffd}鰍ヘ株式会社に置換したら、返ってきた数が増えました。

TRUEでもやってみましたが似たような社名の電話番号が複数の会社の項目で表示されてしまい、それを調べていくよりFALSEとした方が間違いがないと思ってやめました。

エラー表示ではなく0で返ってきたところもあったので調べたら、そもそも電話番号の表示がありませんでした。

情報があるのに表示されないものもありましたが、私が分からないどこかが違うのだと思います。

関数やエラーの項目も見てみました。これからはもっと勉強します。
ご丁寧に、ありがとうございました!
今後も宜しくお願い致します。

(MONY)


 >\x{fffd}鰍ヘ株式会社に置換したら、返ってきた数が増えました。 
 それは良かったです。

 私なら、どちらの表にも先頭に一列「検索用」の列を作って
  (株)・株式会社 などの表示を削除
  全角・半角 を統一
  スペースを削除
  「・」「−」などを削除
 して、ヒット件数が上がるようにしてから数式を使うと思います。

 別々の機会に入力したり、人が違ったりすると、どうしても少しずつ違ってしまいますので。
 人が見れば同じものだってすぐにわかったりするんですけどね。。。

 >TRUEでもやってみましたが似たような社名の電話番号が複数の会社の項目で表示されてしまい
 たとえば、
  一列は FALSE で電話番号を表示。
  二列目は、TRUEで会社名を表示。
  三列目に、TRUEで電話番号を表示。
 しておいて、一列目で #N/A エラーが出ている行をオートフィルタ等で絞り込み
 二列目の会社名を確認しながら三列目の電話番号が妥当かどうか
 人が見て判断していくことで、時間短縮できるかもしれません。

 (HANA)

HANAさん

まだデータが半分以上残っているので、やってみました。
最初に検索用の列を作って、おっしゃるようにヒット件数が上がるようにしました。

次に一列は FALSE で電話番号を表示。

  二列目は、TRUEで会社名を表示。させましたが、二列目に近似値でない会社名が表示され、しかも下の行にコピーしてくと同じ答えが並ぶだけで・・・(泣)

あるはずなのにおかしいなと思って調べてみると、同じ会社名があるのに既に一列目でエラー表示になってしまっていました。

Sheet1(電話番号を表示させたいシート)
A   B C D E F G H I J K L M N O
担当 カナ(濁点等なし5文字) \x{fffd}鰍ネどを取った社名 社名 御中 担当者 様 〒 住所1 住所2 アパマン名 数量 数量 電話 TRUEの社名

ア〜ヲまでのシート(電話番号あり)
A B C D E F G H I J K L M N
社名 カナ(濁点等あり) 敬称 所属 肩書き 担当者 様 〒 住所1 住所2 住所3 アパマン名 電話 FAX

こんな形で、Sheet1のNに入れた数式は=VLOOKUP(D2,ア!$A$2:$N$357,13,FALSE)
Oに入れた数式は=VLOOKUP(A2,ア!$A$2:$M$400,1,TRUE)
です。

何が悪いのでしょうか?

(MONY)


 TRUE で使う時の注意点として
  ●元データが昇順で並んでいる事
 ってのがありますが、その点はどうですか?

 >Nに入れた数式は=VLOOKUP(D2,ア!$A$2:$N$357,13,FALSE) 
 >Oに入れた数式は=VLOOKUP(A2,ア!$A$2:$M$400,1,TRUE)
 これは、検索値のセル番地が変わってますが。。。
 単なる書き間違いですよね?

 それから
 >ア〜ヲまでのシート(電話番号あり)
 とシートが分かれていた場合
 検索範囲をその都度変えないといけないので
 出来るだけ一つのシートにまとめておいた方が良いと思いますが。。。 

 (HANA)

HANAさん

昇順では並んでいました。
セル番地は同じでないとダメなのでしょうか、大きい数字なら良いや と思って大きくしてしまったのですが・・・

番地を同じ数字に修正してみましたが、反応は同じでした。

検索範囲をその都度変えなければならないので面倒なのですが、複数のシートを1つのシートにする方法が分からないもので、手で修正しました。

関数は難しいですね(泣)

(MONY)


 >セル番地は同じでないとダメなのでしょうか
 ん?どういう事ですか?

 私が書いたのは
    ↓では__D2セルが検索値で
 =VLOOKUP(D2,ア!$A$2:$N$357,13,FALSE)
 =VLOOKUP(A2,ア!$A$2:$M$400,1,TRUE)
    ↑では~~A2セルが検索値になってる
 って事ですが。。。

 そして、ご説明では「\x{fffd}鰍ネどを取った社名」はC列じゃないですか?

 その後ろのセル範囲 A2:N357 とか A2:M400 は
 問題が起きるまでは大きな範囲で良いと思います。
  検索範囲(社名がある列)は先頭列にしておかないといけないですが。

 >複数のシートを1つのシートにする方法が分からないもので
 これは、手作業で
  アシートのデータをコピーして、新しいシートに貼付。
  カシートのデータをコピーして、続きに貼付。
  サシートのデータをコピーして、その続きに貼付。。。
 を最後のシートまで繰り返すだけです。

 まとめるのは面倒かもしれませんが、一回まとめてしまえば数式の方を
 その都度変更しなくてもよくなりますので。

 思った結果にならなかった時に
  「もしかして、参照シートを直し忘れてるんじゃ??」
 なんて心配が減りますし、並べ替えだって
 シートを移動しながらやらなくて済みますよね?

 (HANA)


HANAさん

最初からやり直して、まずはシートを1つにまとめ名前をSheet1に直し、電話番号を表示させたい方のシートはSheet2にしました。

そして、社名がある列を先頭列にしてVLOOKUPの式を入力したら最初より大分ヒットしました!

それから、TRUEで電話番号と社名の列を追加して関数を入れ、フィルタを掛けるとこまでできました!

TRUEの列では、やはり近似値でない同じ社名が何度も出てきて(電話番号も)1件しか合致するものがみつかりませんでしたが、何とかここまでたどり着くことができました。

やはり、近似値があるのにそれが表示されない物が何件かありますが、良しとします。
長々とありがとうございました。
とても勉強になりました!

(MONY)


 >TRUEの列では、やはり近似値でない同じ社名が何度も出てきて
 >(電話番号も)1件しか合致するものがみつかりませんでしたが
 そうですかぁ〜。
 でも
 >社名がある列を先頭列にしてVLOOKUPの式を入力したら最初より大分ヒットしました! 
 ってことは、少しくらいは手をかけた価値はあったのかな。。。?

 もう少し何かきっかけがあれば
 >近似値があるのにそれが表示されない物が何件かありますが
 ってのもヒットするようになるかもしれませんが
 それも数件どまりなら、あとは人が見て探したほうが早いかもですね。
  案外、振り仮名列で昇順に並べて TRUEで検索するとみつかるのかも?
  昇順に並べ替えは、会社名の列(範囲の先頭になる列)で並べ替えましたよね?

 人力で探すとして
 もう一つウィンドウを表示させて、並べて見比べると
 探しやすくなるかもしれません。

 メニューのどこかに「新しいウィンドウを開く」的な項目があると思います。

 オートフィルタで ●●を含むものを表示 なんて検索ができますので
 その機能を使うのも有効かもしれません。

 (HANA)

HANAさん

できました!
Sheet1の会社名の列を再度昇順で並び替え、計算式を一旦全て消してもう一度計算式を入れ直したらTRUEの表示が機能しました。(完璧ではありませんが)

なので、1件しかヒットしなかったものが6件ヒットして表示も同じ社名が何度も出てくることはなくなりました。
ありがとうございました。

ウインドウを並べる方法が知っていますので、その方法で上下に表示させて残りを完成させようと思います。

どうもありがとうございました!とても勉強になりました。

(MONY)


 それはよかったです。

 漢字が使われている場合は特になんですが
 たとえば、「田中」「山田」とあった場合
 人が順番に並べると
  1.田中 2.山田
 ですよね。

 振り仮名情報があった場合、エクセルで並べ替えても同じ順番ですが
 振り仮名情報がなかった場合、エクセルで並べ替えると
  1.山田 2.田中
 になってしまいます。

 VLOOKUP関数をTRUEで使う場合、【エクセルが思う】昇順に並んでいないといけないので
 チェック前には念のために並べ替えを行う作業を入れる癖をつけておくのが良いかもしれません。

 ただ、もしかすると 本当に、ふりがなの所でマッチングさせた方が早かったかもしれないですね?
 たとえば「やまだいちのじょう」から濁点を除いた5文字を取り出すなら
 =JIS(LEFT(SUBSTITUTE(ASC(PHONETIC(A1)),"゙",""),5))
 これで全角カタカナの「ヤマタイチ」が得られます。

 もともとカタカナで書かれているなら、PHONETIC関数が不要になります。
 半角で書かれていたら、ASC関数が不要で
 結果が半角で良ければ、JIS関数が不要です。

 (HANA)

HANAさん

そ、そんなことができるとは・・・
今まで手で入力していました。

確かに、ふりがなの所でマッチングさせた方が早かったかもしれないですね。

色々丁寧に教えて下さり、ありがとうございました。
とても助かりましたし、勉強になりました。

(MONY)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.