[[20100531142456]] 『マクロで自動判別して対応するか住所項目を分けた』(ヤイリ) ページの最後に飛ぶ

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

 

『マクロで自動判別して対応するか住所項目を分けたい』(ヤイリ)
 CSVデータの住所から、三重県や八王子といった数値を表わす文字を省きたいのですが
 マクロから判別する方法ありましたらご指導ください。
 なぜ判別したいかというと、カスタマーバーコード一括処理ソフトを使い
 郵便番号と番地からカスタマーバーコードを生成するのに
 数値を表わす件名などを含んでバーコード化してしまうので省きたいのです。
あらかじめ住所1住所2と分ければいいのですが、すでにもらってあるデータですし
いちばん良いのは、住所自体を2つに分けられれば助かります。(ヤイリ)


 サンプルデータを提示してくださいな。
 その上で、どういった風に住所1・住所2の判別をするのかを教えてください。
 提示するデータはダミーで結構ですが、実際のデータと同じレイアウト、
 数値と文字の並び・桁数でお願いします。

 また、投稿の際は行頭に半角スペースを入れると改行が反映されます。
 ←ここに「 」です。
 (とおりすがりん)

 0000000	三重県四日市市河原田町0000	0000000	0000000	5月31日	0000000
 0000000	神奈川県横須賀市八王子0-0-0	0000000	0000000	5月31日	0000000
 0000000	福岡県三条市岩瀬西町00-00	0000000	0000000	5月31日	0000000
 
 こういう並びで、たとえば上記の三重県四日市市河原田町と0000を分けたいのです。
 分けられないのであれば住所をコピーしてコピーした住所項目から県名のなど
 一二三四五六七八九を判別し、三重県なら 重県と空白にし、ソフトを読み込ませて
 バーコード化したいのです。
 なにか良いアイデアがあればアドバイスよろしくお願いいたします。 

 補足ですがコピーした住所は右隣にでも挿入して、三重県なら 重県と空白にし、
 郵便番号と訂正した住所だけをソフトを読み込ませて
 バーコード化したいのです。(ヤイリ)


 補足部分がよくわからないんですが、
 (「三重県」を「重県」とするのはなぜなのかしら)
 とりあえず住所を分ける部分は下記スレッドが充実してます。
[[20060712165702]] 『数字だけ』(もち) 
 (とおりすがりん@スキルは検索のみ)

 ご回答ありがとうございます。県名等の数値も含んでソフトに読み込ませると、
 本当は郵便番号と番地の数値のみほしい情報なのに
 余計な数値が含んだ漢字もバーコードデータとして生成されてしまうからです。
 マクロでなんとかピックアップ出来ると聞いた程度でやり方がまったくの
 素人なのですが
 どういう風に設定すればよろしいのでしょうか?
 (ヤイリ)


 え〜っとですね、美しいマクロはそのうちどなたかが
 作成してくださると思うので、稚拙版です。
 リンク先のROUGEさんのコード(と手順説明)をおかりしています。

 Alt + F11を押して挿入から標準モジュールを選択。
 出てきた画面に下記コードを貼り付けて、その画面を閉じる

 ’以下をコピペ*****

 Function ricecake(txt As String) As String
   txt = StrConv(txt, vbNarrow)
   With CreateObject("VBScript.RegExp")
     .Pattern = "\d+(-\d+)*"
     If .test(txt) Then
       ricecake = .Execute(txt)(0)
     Else
       ricecake = ""
     End If
   End With
 End Function

 Sub test()

 Dim TargetFile As Workbook, DataFile As Workbook
 Dim txt As String, PostCD As String
 Dim RowEnd As Long
 Dim i As Long

 Set DataFile = ThisWorkbook
 RowEnd = Range("A1").End(xlDown).Row

 Set TargetFile = Workbooks.Add
 Columns("A:B").NumberFormatLocal = "@"
 For i = 1 To RowEnd
   txt = ricecake(DataFile.Worksheets(1).Range("B" & i))
   PostCD = Format(DataFile.Worksheets(1).Range("A" & i), "0000000")

   With TargetFile
     .Worksheets(1).Range("A" & i) = PostCD
     .Worksheets(1).Range("B" & i) = txt
   End With
 Next i
 End Sub 

 ’ここまで*****

 対象のcsvを開いた状態で、【マクロ】-【test】を実行。
 新規BOOKに7桁に揃えた郵便番号と、住所の数字以下を取り出してます。
 元データのA列に郵便番号、B列に住所が入っていると仮定してます。

 csv保存して使用してください。
 (とおりすがりん)


 実際教わった通りでできました。感謝してます。
 絞り込んだデータを専用ソフトでカスタマーバーコードを生成して、出来たバーコードデータを、
 もとの項目データに貼り付け  てデータ出力させていただきたいと思います。
 また何かあったときはアドバイスお願い致します。どうもありがとうございました。(ヤイリ)

コメント返信:

[ 一覧(最新更新順) ]


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