- ベストアンサー
エクセルで顧客管理の住所データを絞り込む方法
- エクセルで顧客管理をしている際、住所のデータを絞り込む方法について困っています。クライアント様から『地域の絞込みをしたい』という要望があり、細かく細分かれたファイルを作成する必要がありますが、検索方法がわかりません。
- データには異なる形式の住所があり、『【1-】で始まる』という条件では正確な絞り込みができません。試しにオートフィルターで検索をかけてみましたが、想定外の住所も結果に含まれてしまいました。
- そこで、文字だけを消去して数字のみを抽出する方法や、『○丁目』で絞り込む効率的な方法があるか教えていただきたいです。困っているので、どなたか助けていただけるとありがたいです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>1件1件クリックして、ダイアログボックスを出すタイプのものなのでしょうか? クライアントは住所の全ては必要なく、既存のデータから”丁目”までに データの変換を希望されているのかな?と判断しての変換サンプルです。 実際のデータには触れてないです。
その他の回答 (6)
- n-jun
- ベストアンサー率33% (959/2873)
ユーザー定義関数なら、 Function try(ByVal v As String ) As String With CreateObject("VBScript.RegExp") .Pattern = "^(\D*\d*)\-\S*" .Global = True If .TEST(v) Then try = .Replace(v, "$1" & "丁目") Else try = "" End If End With End Function セルA1に住所があってB1に書き出したいのなら B1 =try(A1) try:好きなネーミングつけて下さい。
- n-jun
- ベストアンサー率33% (959/2873)
>どのように使えばいいのでしょうか・・・? >エディタを開いてモジュールにペーストはしたのですが・・・ 標準モジュールに貼り付けたら、エディタの実行>マクロの実行> tryを選択して実行。 と言うより、メッセージが表示されるだけのサンプルですけど。 実際にはシート構成が不明ですし、上記で良いのかわかりません。
補足
『伊勢崎市今泉町1丁目』というダイアログボックスが出てきました。 1件1件クリックして、ダイアログボックスを出すタイプのものなのでしょうか?
- n-jun
- ベストアンサー率33% (959/2873)
>群馬県伊勢崎市今泉町1-□-△ というデータを >群馬県伊勢崎市今泉町1丁目 というデータだけを抜き出したいということです。 何となく抜き出すというか、変換したいように感じたのですが。 Sub try() Dim c, v v = Array("群馬県伊勢崎市今泉町1-1-1", _ "群馬県伊勢崎市東本町3111") With CreateObject("VBScript.RegExp") .Pattern = "^(\D*\d*)\-\S*" .Global = True For Each c In v If .TEST(c) Then MsgBox .Replace(c, "$1" & "丁目") End If Next End With End Sub こうゆう事ではないのですか?
補足
どのように使えばいいのでしょうか・・・? エディタを開いてモジュールにペーストはしたのですが・・・
- bin-chan
- ベストアンサー率33% (1403/4213)
まず、丁目をアラビア数字から漢数字に変換しておく。 その上でASC関数で全角→半角変換した際に「文字がどこで変化したか」を検出すれば、 変換前)○○県○○市○○町三丁目1-2-3 変換後)○○県○○市○○町三丁目1-2-3 と差が生じます。そこで区切る でも「丁目」で区切ろうにも和歌山市では「丁」ですからねぇ。 住所に「甲乙丙丁」と十干の名称を付けてるところもありますし。 #2さんのおっしゃるとおり、仕様を詰めた方が良いと思います。
- n-jun
- ベストアンサー率33% (959/2873)
クライアントが求めているのは、 群馬県伊勢崎市今泉町1-□-△ から 1-□-△ を残すことなのですか? 群馬県伊勢崎市今泉町1丁目 と言う条件から 群馬県伊勢崎市今泉町1-□-△ を抽出する事ではないのでしょうか? そのあたりが不明に思います。
補足
説明不足で申し訳ございません。 今回の抽出データを元に自社の広告を配布している地域の選定のし直しを するそうなのですが、現在のデータは住所が完全に入力されている状態のため、 余計なものを省き【○県○市○町○丁目※以下の番地やマンション名などは必要ない】という形にして、 現在広告を配布している地域と、実際に購入してくださったお客様の数を比較したいそうなのです。 ですので、抽出したいデータは、No.2様のおっしゃっているのと逆で、 群馬県伊勢崎市今泉町1-□-△ というデータを 群馬県伊勢崎市今泉町1丁目 というデータだけを抜き出したいということです。 うまく説明できているか不安ですが、よろしくお願いいたします。
- nebsoku
- ベストアンサー率35% (65/185)
まずはVBA以外の方法を。 住所のデータに規則性があるのなら、データの分割ができるのではないでしょうか? 住所の番地が「数字-(ハイフン)数字-(ハイフン)数字」と、必ず「-(ハイフン)」で区切っている場合。 メニューバー[データ]-[区切り位置]から-(ハイフン)で区切ってデータをわければ、簡単に抽出できるようになるかと思います。 区切り位置を使うときは該当列の右に複数の列を挿入してから実施してください。 該当列の右側のデータが上書きされるおそれがあります。 (上書きされるときは、ちゃんと確認メッセージが表示されます)
お礼
ご返信遅くなりまして申し訳ございません。 業務は無事終えることができました。 色々とご協力頂きありがとうございました。