• 締切済み

vba 住所で判断して担当支店に振り分ける マクロ

困っております。助けてください。。。 顧客一覧があります。 それぞれの町名で判断して、これぞれの顧客に担当支店を振り分けたいのですが、 if文で ○○町 だったら 01支店 else if ××町 だったら 02支店 というふうに、ひたすら書いていくしかないのでしょうか? 対象住所は一つの市の数あるので、膨大です。 郵便番号で範囲をきめて、ふりわけていくのが一番かと思っているのですが・・・。

みんなの回答

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

No.4です。 >ただ、○○町という住所の管轄はA支店とB支店両方という場合があります。 というコトですので・・・ 前回と同じような方法ですが、Sheet2の表の作り方次第でコードは変わってきます。 Sheet2の表は↓の画像のような感じにしてみました。(最大2つの支店としています) 今回もSheet2の表はA列の文字数の昇順に並び替えをしておいてください。 (○○町と東○○町といった感じの町名を区別するため) 標準モジュールです。 Sub Sample2() Dim i As Long, lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") Application.ScreenUpdating = False lastRow = .Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row .Range("A1").AutoFilter field:=2, Criteria1:="*" & wS.Cells(i, "A") & "*" If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Range(.Cells(2, "C"), .Cells(lastRow, "C")).SpecialCells(xlCellTypeVisible).Value = _ Trim(wS.Cells(i, "B") & " " & wS.Cells(i, "C")) End If Next i .AutoFilterMode = False Application.ScreenUpdating = True End With End Sub こんな感じではどうでしょうか?m(_ _)m

somehow123
質問者

お礼

ありがとうございます! 販売店に対して、支店を複数割り当てる表づくりが大変ですが、、、やってみます。 ご親切に、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 一例です。 ↓の画像のように別Sheet(Sheet2)のA・B列に一覧表を作成しておきます。 C2セルに =LEN(A2) という数式を入れ、フィルハンドルでダブルクリック! そして、C列の「昇順」で並び替えを行っておきます。 (本来であれば、Sheet1の「空白セル」を抽出条件に加えれば「降順」でも良いのですが、 抽出条件を1列だけにしたため) 以上の下準備(この方が大変だと思いますが・・・)ができた上でのVBAです。 標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() Dim i As Long, lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False '▼Sheet2の2行目~A列最終行まで For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row '▼Sheet1のB列でフィルタを掛け、抽出条件をSheet2のi行A列の文字列が含まれているもの .Range("A1").AutoFilter field:=2, Criteria1:="*" & wS.Cells(i, "A") & "*" '▼表示されているデータが2行目以降にあれば、表示されているC列にSheet2のi行B列データを表示 If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Range(.Cells(2, "C"), .Cells(lastRow, "C")).SpecialCells(xlCellTypeVisible).Value = wS.Cells(i, "B") End If Next i .AutoFilterMode = False Application.ScreenUpdating = True End With End Sub ※ コード内に若干のコメントを記載していますので、 実状の配置に合わせて適宜修正してみてください。m(_ _)m

somehow123
質問者

お礼

ありがとうございました。さっそく作成しました。 VBAは無事実行できました。 ただ、○○町という住所の管轄はA支店とB支店両方という場合があります。 こういった場合は、両方の支店名を明記したいのですが、なにかいい方法はございますでしょうか??

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

お邪魔します。似たようなことを今やってたもので。多分質問者様よりデータ量ははるかに少ないはずですがw webonerさんとusami33さんの回答を合わせる感じだといいんじゃないでしょうか? 私ならまず郵便番号と支店の対応シートを作ります。 111-0001 A支店 111-0003 A支店 111-1001 B支店 111-1002 A支店 111-1011 C支店 顧客リストシートに郵便番号はあるのでしょうから、顧客リストの郵便番号を検索値にして、郵便番号と支店の対応シートを作ります。 =vlookup([顧客リストシートの郵便番号のセル],[対応シート全体],[対応シートの支店名のセルが左から何個目か],false) ↑これを顧客リストシートの空いてるセルに1個入れたらそれをコピペ…で出てくるはずですが、この質問てExcelでよかったですか? >郵便番号で範囲 usami33さんが教えてくれたCSVを斜め読みすると、範囲でやっちゃうと市区町村が入れ子になっちゃったりすると思うんで、範囲はやめといた方がいい気がします。 面倒でも↑で書いた「郵便番号と支店の対応シート」みたいなものは作っといた方が、確実な気がします。私もデータを斜め読みしただけなんで何とも言えませんが。

somehow123
質問者

お礼

ありがとうございます。大変参考になりました。 現在、支店の担当地区一覧を作成しているので、こちらが出来次第、つくります。 そもそも、担当地区一覧がなかったようで。。。。

somehow123
質問者

補足

ありがとうございました。さっそく作成しました。 ただ、○○町という住所の管轄はA支店とB支店両方という場合があります。 こういった場合は、両方の支店名を明記したいのですが、なにかいい方法はございますでしょうか??

全文を見る
すると、全ての回答が全文表示されます。
  • usami33
  • ベストアンサー率36% (808/2210)
回答No.2

郵便番号データは開示されているの知ってました? http://www.post.japanpost.jp/zipcode/download.html このデータをダウンロードして、対応表を作成してしまえば、検索や表示方法は簡単にできますよね。

全文を見る
すると、全ての回答が全文表示されます。
  • weboner
  • ベストアンサー率45% (111/244)
回答No.1

町名と支店の対応一覧表を作り 関数のVLOOKUPのような形式で読み込む (と言うかExcelならVLOOKUPで処理したほうが早い)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelの住所による並び替え

    Excel2010を使用しています。 A列 顧客名 B列 住所 C列 顧客履歴 のデータがあります。 C列の顧客データはA列の顧客に対して複数行あります。 このとき、住所のB列で地域ごとに並び替えをしたいと考えています。 住所は、○○県○○市○○町1-2-3のようになっています。 しかし住所登録によっては、 ○○県○○郡○○町1-2-3 ○○市○○町1-2-3 のように、入力した人や時期(市町村統合前の状態)によって形式が違います。 「○○町」の部分を使って並び替えをするために、ユーザー設定リストで、町名リストを北から南の町名順で作成してそれを使って並び替えをしてみましたが、上手く反映しません。 ユーザー設定リストの作り方や、マクロの組み方があれば教えていただけないでしょうか?

  • ACESS 2003のVBAについて

    If IsNull(テキスト町名2ID) Then MsgBox "郵便番号と町名2IDに入力してください" Exit Sub End If If テキスト町名2ID = "" Then MsgBox "郵便番号と町名2IDに入力してください" Exit Sub End If 上掲のようなコードを何箇所かで使用しました。上側のコードで失敗する場合と下側のコードで失敗する場合とがあります。この二つのコードの違いはどこにあるのでしょうか。 「テキスト町名2ID」はフォームのテキストボックスです。

  • VBAを使用して住所自動出力できますか?

    シート1に京都府の全市町村(町名・番地まで)の郵便番号一覧があるとします。 (A列に郵便番号 B列に市町村 C列に番地 という感じ)シート2でMsBOXで "検索したい住所入力" と出力されて 入力すると 該当する住所が表示されるようなVBAは作成可能でしょうか?うまく表現できませんがぜひご教授ください。

  • 住所録管理について

    小さな会社で500件あまりの顧客住所録を筆ぐるめで管理しています。 これを住所ごとに一覧で出せる(たとえば郵便番号からとか市名を入れるとその住所の顧客だけの一覧表が出せる)ということができるものはありますでしょうか?住所を登録すると自動的に郵便番号から振り分けられるような・・・筆ぐるめですと500件の一覧を50音順には印刷できますが必要な地域だけの一覧表が出せるようにしたいのです。これは普通のソフトにはありませんか?プログラムなんて絶対できないので・・・初心者ですみませんがよろしくおねがいします。

  • 以下の住所の書き方は間違いになるのでしょうか?

    以下の住所の書き方は間違いになるのでしょうか? 分かりにくいタイトルですみません。 申込用紙や懸賞など、日常生活においてでは、住所を書く機会ということは沢山あります。 特に、指定が無い場合は、住所を書く場合でも、県名を省略して書かれたこともあるかと思います。 (要するに「○○市××(大字名)」などという感じです) そして、市ではなく町に住んでいる人の場合は、大抵町名の前に郡名を書かれると思います。 (「○○郡××町△(大字名)」のように) 市の場合は、「○○市××区 △(大字名)」というように、次に区が来る場合と、「○○市××町 △(大字名)」のように、町名が来る場合、そして、特に合併をしていない市で、区がない場合で、町名も一応存在するものの、街の中心地のようなところで、、店の住所看板などは、町名を省略されて「○○市 ××」というように、町名を省略して表記している場合もあるかと思います。 ふと思ったのですが、以下の場合では、郵便が届かないなど、何かのときに不都合が生じる可能性はあるのでしょうか? 1:市ではなく町に住んでいる人が、郡名を書かずに、県名の次に町名を書く場合  例:「○○県 △町 □(大字名)」 2:合併をしておらず、区のない市で、本来は市名の後に町名が来るのですが、町名を書かずに、市名の次に大字を書く場合(街の中心地のようなところなど、看板などでは省略されている) 例:「○○県 ××市 △(大字名)」

  • 住所のわからない父に

     住所のわからない(というか教えてくれない)父に、宛名(父の本名)のみで  例えば近隣の郵便局などに留置きしてもらうことなどできるでしょうか?  宅配便も営業所止めにはできますが、住所記入は必須ですよね?  住所はわかりませんが、住んでいる町じたいはわかるので、郵便局の支店もたぶんわかります。  もしできないなら何か他に良い方法はないでしょうか?  よろしくお願いいたします。  

  • 住所から郵便番号に変換したい

    IMEで住所から郵便番号を変換して調べたいのですが、町名まで打って変換しても「東京都」のところまでを文節と判断してうまく郵便番号に変換されません。 強制的に町名までドラッグ指定して変換するとすべてカタカナやひらかなの候補しか出てきません。 プロパティの郵便辞書変換にはチェックは入っているのですがやり方がまずいのでしょうか。

  • 新居の住所がわかりません。

    この度、引っ越しをすることになり 新しい賃貸が決まりました。 その新居の住所が 不動産屋さんに確認すると “○○町××1-1 建物名 △号室”でした。 しかし、郵便番号を入れると自動で住所が入力されるものやgppgleマップでは、 “○○町大字××1-1 建物名 △号室”と表示されます。 また、郵政のHPの郵便番号検索やウィキペディアでは、 前者の方で記載されています。 ネットで調べると“大字”は 合併して町名が変わった地域につけることが多いみたいなのですが。。。 これから引っ越しに際して 新住所を書く機会も多いので どっちで書けばいいのか悩んでいます。 ちなみに新居は築1年です。

  • 教えてください!

    郵便番号はあっているんですが住所が○県○市○町○番地の町名が下○町を○町と書いてしまったみたいねんですが、届くと思いますか?

  • 住所の変更の情報を得るには?

    顧客データベースを管理しているのですが、 市の統合などに伴う住所変更などがあると、 住所を変更しなくてはなりません。 現在、私が把握しているのは、 大宮市+浦和市+与野市=さいたま市 保谷市+田無市=西東京市 などですが、 こういう情報をまとめて情報提供している ホームページなどはないのでしょうか? ローカルな町名の変更ですと、 変わったことすら知らないままのことがあるので…。 一番詳しいと思われる郵便局のページなどを探しても 情報が見当たらないのです。 どなたかご存知の方がいらっしゃいましたら教えて下さい。 または、この町名が変更になったよ、などの情報でも構いません。 よろしくお願いいたします。 (…質問先が適当ではないかな…?? ^_^;)