プロが教えるわが家の防犯対策術!

おはようございます。
エクセルVBAについての質問です。

やりたいことは、配付用シートと業者一覧シートがあり
配付用シートの施工業者名(B14:B45まで記載あり)で
業者一覧の施工業者(200社ほどあります)を検索して
電話番号から住所まで(B列 C列 D列)をコピーして
配付用シートの(C列 D列 E列)に貼り付けしたいです。
尚、両方のシートに空欄があった場合はそのまま空欄にしたいです。

Find検索とかFor nextを使うのだと思いますが、私には難しくて分かりません。

当方70歳と高齢なためコードと簡単な解説を頂けるとありがたいです。
よろしくお願いします。

「エクセルVBAについての質問です。」の質問画像

質問者からの補足コメント

  • うれしい

    mygoonickname様
    sheet2部分を書き換えて試しますが空欄のままです。
    ネットでググりながらVLOOKUPの関数を入力しても同じ結果でした。
    私のちょっとした手違いだと思いますが、これから勉強してみます。
    ありがとうございました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/01/09 08:58
  • HAPPY

    tatsumaru77様
    おはようございます。
    ダウンロード後、標準モジュールに貼り付けて動作確認をしましたが、
    私の思い通りの結果となり感動しています。
    一行一行にコメントが付してありコードの理解に大変役立ちます。
    こんなコードがすらすらと書けるなんて羨ましい限りです。
    ありがとうございました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/01/09 09:05

A 回答 (6件)

下記URLにマクロをアップしました。


標準モジュールに登録してください。
このサイトに投稿すると、連続した空白が1つになるため、インデントが乱れます。コメントも含めて、きちんとマクロを提示したいので、下記URLにしました。
https://ideone.com/XhD7NC

使用上の注意
シート名は
業者一覧シートを"業者一覧"
配布用シートを"配布用"
としています。もし、あなたの実際のシート名と異なるなら
Set sh1 = Worksheets("業者一覧")
Set sh2 = Worksheets("配布用")
上記の2行に、実際のシート名を設定してください。

その他、不明点があれば補足してください。
この回答への補足あり
    • good
    • 1
この回答へのお礼

早速の解答ありがとうございました。
外出中なので今夜ダウンロド後試して見ます。ありがとうございます。

お礼日時:2022/01/08 10:06

No.4です。



#5さんの意見に同意できる経験はあります。
めんどくさくなったので『なら使うなよ!』と言っちゃいましたし。

ボケ防止ってなら別の方の質問・回答を実際に自分で試してみるのも手です。
私は最初VBAを覚えていった方法は上記です。
なので基本の『マクロの自動記録』の存在を知ったのさえ、始めてから半年以上たった時でしたし・・・・・・・・
ただ回答者によってコードの癖がありますので、最初は説明が丁寧な方を真似るのが宜しいかと。

ただ昔は沢山いらっしゃったのですが、時間の経過で回答者も変わり『ググればわかるだろ!』的で解説も記載しなくなっちゃいましたね。
質問者側でもコードを貰えて動けばそれでよしって考えも出てますし。
そしてまた躓いたら質問上げればいいって感じで。

Q&Aサイトは幾つもありますから、アチコチ見る事をお勧めします。
    • good
    • 1
この回答へのお礼

何度もご丁寧にありがとうございます。
マクロの自動記録、すっかり忘れていました。
すでにボケてますよね。
ありがとうございました。

お礼日時:2022/01/08 10:34

No1です。



>少しかじったことのあるVBAでボケ防止をと思った次第です。

仕事で使用するのでしたらVBAはメンテナンスが大変ですよ。
部局がかわっても何かあると呼び出されます。
おまけに「使えないものを作って困る」と悪口さえでてきます。

それと「ボケ防止」でしたら一度自分でソースを組んでみて、それで動かなければソースを提示してアドバイスをもらう形の方が良いです。
    • good
    • 1
この回答へのお礼

何度もありがとうございます。
おっしゃる通り、年寄りが余計なことするなと言われそうですね。
VBAは自分で最初から書く事はできません。

お礼日時:2022/01/08 10:26

失礼を承知の上で。


ご年齢からいけば数式の方が宜しいのではないかと。
或いは若手に任せる(メンテも含め)。
    • good
    • 1
この回答へのお礼

ありがとう

そうですよね。社内で一番時間が有りますし、
頭の体操と思って取り組んだ次第です。
ありがとうございました。

お礼日時:2022/01/08 10:09

おはようございます。



VBAではなく、関数ではダメでしょうか?
Vlookup関数が使えると思います。

セルC14に、下記の様な関数を入れて、C14セルをコピー、D14、E14に
貼り付け。 その後、C14~E14をコピーして、必要な範囲まで下側に
貼り付けてどうでしょうか?

=VLOOKUP($B14,Sheet2!$A$5:$D$300,COLUMN()-1,FALSE)
Sheet2は必要に応じて変更して下さい。(業者一覧シートのシート)

VBAでないとできないなら、VBAが良いかと思いますが、関数でできるもの
は、極力関数を使った方が、スマートかと思います。
この回答への補足あり
    • good
    • 1
この回答へのお礼

今外出中でパソコンが使えませんので今夜試して見ます。
ありがとうございます。

お礼日時:2022/01/08 10:03

協力業者一覧の表から商工業者名をキーにしてVLOOKUP関数でできないでしょうか。

    • good
    • 1
この回答へのお礼

ありがとう

ご教授ありがとうございます。
Vlookupでできると思いますが、
少しかじったことのあるVBAで
ボケ防止をと思った次第です。
ありがとうございました。

お礼日時:2022/01/08 10:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!