- ベストアンサー
エクセルマクロで住所を比較しコードを代入したい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.1です! >この場合代入される側のSet ws2 = Worksheets("sheet2")の シート名を指定しなくてもいい方法はありませんか シート名が固定ではないので開いているシートで動作するように したいのですが とありましたので・・・ 参照先のBookは開いた後のコードになります。 参照先のBook名は仮に「book2」とします。 そしてws2を設定しなくてもいいように、画面左下にある操作したいSheet(今回はSheet2とします)のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、 訂正した↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub test() 'この行から Dim i, j As Long Dim wb As Workbook Dim ws1 As Worksheet Set wb = Workbooks("book2") '←「book2」の部分はBook名を! Set ws1 = wb.Worksheets("sheet1") '←「sheet1」はbook2の参照先Sheet名を! For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(j, 2) Like ws1.Cells(i, 2) & ws1.Cells(i, 3) & "*" Then Cells(j, 3) = ws1.Cells(i, 1) End If Next j Next i End Sub 'この行まで こんな感じではどうでしょうか?m(__)m
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17068)
質問には実例を挙げて質問すべきだ。 何が難しいのかわかって質問しているのか。 シート2の住所と シート1のB列に都道府県名+ C列に市区町村名は、同じ体系なのか。何も書かないで質問になら無い。 住所と言えば、普通は丁目番地まで連想するが、データはどうなんですか。 外に住所で都道府県が省かれているものも散在するとかも面倒になる 含まれる形である場合は、シート1を検索するのは、それなりに難しくなる。 住所が東京都調布市までになっているなら、VBAでもVLOOKUP関数を使って、関数と同じように出来る。 丁目番地つきの場合は、丁目番地をはずす(除く)ことは何か特別の形式(数字とハイフンに限るとか)が無いと分離が難しい。
- rukuku
- ベストアンサー率42% (401/933)
こんばんは 原始的な方法です。 準備として、シート1のD2に =B2&C2 以下、シート1のデータがある行だけオートフィルします。 (1行目はタイトル行であると想定しています) また、シート2のB列のデータに余計なスペースが含まれている場合には前もって取り除いておいてください。 Like演算子を使うと特定の文字列が含まれるか判定できます。 Sub 住所コード() Dim DataLastLine As Long 'シート1の最終行 Dim ResultLastLine As Long 'シート2の最終行 Dim DataLine As Long 'シート1の各行 Dim ResultLine As Long 'シート2の各行 ThisWorkbook.Activate DataLastLine = Worksheets("シート1").[A65536].End(xlUp).Row ResultLastLine = Worksheets("シート2").[B65536].End(xlUp).Row For DataLine = 2 To DataLastLine For ResultLine = 2 To ResultLastLine If Worksheets("シート2").Cells(ResultLine, "B") Like "*" & Worksheets("シート1").Cells(DataLine, "D") & "*" Then _ Worksheets("シート2").Cells(ResultLine, "C") = Cells(DataLine, "A") Next ResultLine Next DataLine End Sub
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 関数でもできそうな感じですが、VBAをご希望のようなので・・・ 一例です。 ↓の画像のような感じでSheet1には都道府県・市区町村名のみで Sheet2のB列には都道府県からの正確な住所が入っているものとします。 ↓のコードを標準モジュールにコピー&ペーストしてマクロを実行してみてください。 Sub test() 'この行から Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row If ws2.Cells(j, 2) Like ws1.Cells(i, 2) & ws1.Cells(i, 3) & "*" Then ws2.Cells(j, 3) = ws1.Cells(i, 1) End If Next j Next i End Sub 'この行まで 参考になれば良いのですが 的外れならごめんなさいね。m(__)m
補足
すいません、期待通りの動きになったのですが これを同じブック内ではなく違うブックから参照する場合の 指定法はどうすればよろしいでしょうか? この場合代入される側のSet ws2 = Worksheets("sheet2")の シート名を指定しなくてもいい方法はありませんか シート名が固定ではないので開いているシートで動作するように したいのですが。
関連するQ&A
- エクセルのVLOOKUPで「検索値」を複数設定したいのですが。
エクセルのVLOOKUPで「検索値」を複数設定したいのですが。 例えば A列 都道府県名 B列 市区町村名 C列 町名 D列 番地 E列 人口 F列 面積 という表Aがあります。 自分の持っている都道府県名、市区町村名、町名リスト(表Aの中から数個だけピックアップしたもの)に人口を(表Aから引っ張ってきて)投入したいのですが、町名だけでVLOOKUPを使うと、複数個の同じ町名があるためにうまく行きません。 そこでA、B列の都道府県名、市区町村名も「検索値」として含めて、3列とも合致するものを引っ張ってきたいのですが、どうしたらよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCEL マクロ シート 比較
EXCEL マクロ でシート間のデーターをシート2を基本に比較してシート3へ結果を出す 新規・削除と表示する。 シート1 シート2 シート3 氏名 コード 氏名 コード 氏名 コード A列 B列 A B A B C 山川 1001 山川 1001 1002 谷 削除 谷 1002 空 1003 1005 海 新規 空 1003 海 1005 田 1006 田 1006 まことにお忙しいところよろしくお願いいたします。
- ベストアンサー
- SE・インフラ・Webエンジニア
- ★エクセルマクロコード教えていただけますでしょうか
マクロのコードを組みたいと考えておりますが、 ほとんど初心者のため、お詳しい方の力を貸していただきたい次第でございます。 m(__)m ○オートフィルターーでデータをソートし、そのソートごとのシートを自動作成。 その後、そのシートを各フォルダに保存したい。 あるデスクトップ上にあるエクセルシート「管理DB」の「sheet1」にある管理データ A列(グループa~e)、B列(登録日)、C列(ステータス)によって構成されているシートで、 1.A列「グループ」「a」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダX本部」に保存。 1~5の一連の作業をグループがなくなるまで繰り返したいと考えています。 1.A列「グループ」「b」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダY本部」に保存。 ※一連の作業の中で、グループ名と、シートの保存先が変わる以外、この作業の繰り返し。 以上の作業を実行するマクロを組むことは可能でしょうか。 また、マクロのコードを教えていただけると幸いです。 マクロについてお詳しい方、何卒よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセルマクロについて
お世話になります。 エクセルのマクロについて不慣れなためご質問させてください。 下のような表がありこれを集計して新しく表にしなおしたいと思っています。 1列目 2列目 A XXXX B XXXX C XXXX A XXXX A XXXX B XXXX 1列目の同じ文字列を数えて表を作りなおしたいのです。 1列目 2列目 A 3 ←数えた回数を入れたいと思います B 2 C 1 初めの表はマクロで作成出来たのですが2つめの表を作成する エクセルマクロを作成したいと思っています。 サンプルを頂けると助かります。
- ベストアンサー
- オフィス系ソフト
- 完全一致したら代入するマクロを教えてください
エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣に後者のセルの右隣の文字列を代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。よろしくお願い申し上げます。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロを知りたい
エクセルで,たくさんのデータが入力された【シートa】があります。 新しく【シートb】を作成して,そこに空白の表(1)~(10)までを作成します。 (ちなみに表(1)は1行から始まり100行まで,表(2)は101行から始まり200行まで・・・・といった感じです) 【シートb】の表(1)には,【シートa】でA列に「1」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。同様に,表(2)には,【シートa】でA列に「2」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。・・・というのを表(10)まで続けます。 上記のような命令をボタン一つで操作できるようなマクロを教えて欲しいのです。 お願いします。
- 締切済み
- オフィス系ソフト
- エクセルのマクロについて
エクセルでマクロを組んでいますが、ひとつだけ再現できず困っています。 A1からE100までの表で、A列からD列までの数値をE列で○と×で判定します。 この時、E列が○の場合にA,B,D列のデータをクリアしたいのです。 マクロのコードがわかれば助かります。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセルのマクロについて
エクセルマクロについて教えてください 現在作ろうとしているマクロは下記の通り A列(発注日) B列(発注品名) M列(納入日) 20130822 A 20130826 20130822 B 20130826 20130823 C 20130827 20130823 D 20130827 20130824 E 20130827 20130825 F 20130828 ・ ・ ・ ・ ・ ・ 続く 続く 続く 毎週作成する資料の為、発注件数や納入日は作成のつど 変わってきます。 上記の内容でエクセルシートに表があった場合 N列 O列 20130826 2件 20130827 3件 20130828 1件 と表記したいのですが、どのようにマクロを作れば良いか 誰かご教授して頂けませんでしょうか?
- 締切済み
- その他(学問・教育)
- Excel 2007 マクロ 表の集計について
Excel 2007 マクロ 表の集計について 2つのシート(Sheet1とSheet2)の情報を集計して Sheet3に反映するマクロを考えています。 (1)Sheet1のC列、D列、E列とSheet2のC列が空欄の場合は Sheet3に反映しません。 (2)Sheet1のC列、D列、E列とSheet2のC列のいずれかに数値が 入っている場合にはSheet3に行を反映します。 ※Sheet3に反映する際に、Sheet1とSheet2のキー(A列)は 反映しません。 各Sheetの表は画像を添付します。 どのようなマクロを作成すればよろしいでしょうか。 マクロの超初心者です。 マクロのサンプルをご紹介頂けますでしょうか。
- ベストアンサー
- その他MS Office製品
- マクロで非表示シート内にあるデータの検索方法が知りたい
マクロの勉強をしているのですが、練習で郵便番号検索ツールを作成したいと思っています。 概要 まず、郵便番号7桁を入力する。変換ボタンを押すと、住所を検索し、漢字で住所を表示し、読み仮名をひらがなで表示する。 とまぁ、こんな感じのものを作りたいと考えています。 で、取りあえず郵便番号と住所(読み仮名つき)一覧表を作りました。 一覧表は・・ A1には郵便番号、A2には都道府県名、A3には市区町村名、A4には町名、A5には市区町村名(ふりがな)、A6には町名(ふりがな) となっています。 さて、ここからが問題なのですが・・・ ユーザーフォームを使ってこれを使えるようにしたいのですが、検索方法がわかりません。 イメージとして、テキストボックスに入力してもらい、変換ボタンを押すと、エクセルシートの中から該当する郵便番号を検索し、その隣にある内容を変数に代入し、持ってこようと思っていました。 でも、ここで問題が・・・ 検索してるところが見えるとかっこ悪い 笑 というわけで・・もうちょっと何とかしたいんですけど、シートを非表示にしちゃうと、マクロの記憶で得た検索方法はエラーになっちゃうんですよね。。 そんなわけで、これをどうにかできないか考えています。非表示シートの検索方法があれば一番いいのですが、もしない場合は代替案を教えていただけるとありがたいです。 よろしくお願い致しますm(_ _)m
- ベストアンサー
- Visual Basic
お礼
ありがとうございます、本当に助かりました。