会社で使用しているExcel形式の住所録ですが、丁・番地・号を区切る-(ハイフン)に、別の似たような横棒の記号が使われていたり、果ては漢数字の一が使われている始末でほとほと困り果てております。
Excelファイルをインポートしたテーブルに、置換クエリでハイフン以外の横棒記号をハイフンにしたいのですが どうすれば実現できますでしょうか。ただし、カタカナの伸ばし棒はハイフンに変換したくありません。
置換クエリ以外の実現方法があればその方法も教えて頂けますと幸いです。
無理ですよ。諦めてください 文字とデータの歴史はまぁ、いちいち語るほどでもないんでしませんが、そういう問題と常に戦ってきた歴史です。対処していないシステムから移行する際には全データ1件1件人の目でチェックしなおすしかありません
「住所録」なので例えば次のようなデータですかね
ザワザワ村2-3 Excel一〇一号室 zawazawa村一丁目五番地 ワード3号棟404
「ハイフン」の代わりに「漢数字の一」を使っているパターンは絶望的です。正しい住所として「漢数字の一」を使っている場合と区別がつきません
それ以外の「ハイフンの代わりの文字」であれば、文字を一文字ずつチェックして住所に使われるはずのない文字はすべてハイフンにするとできるかもしれません
稀に記号を屋号に入れていたりする例を見るので住所に使われるはずのない文字をうまく設定できるかも何とも言えませんけどね
「カタカナの伸ばし棒」と条件を付けているので上記の例を出していますが、建物名まで含まないような住所であれば、使われる文字も限定されるのでいくらかマシになるかもしれません 分割されていないのなら、どうやって区切るか?という新しい問題が発生しますが
すぐにでも直面する例を挙げてみましたが、他にもあれこれ出てくると思います。できることはせいぜい「住所に使わるであろう文字のみのデータはチェック済みとする」くらいでしょう。この「文字のチェック」をするならば、VBAで文字列チェックすればやれます
住所フィールドは1・2に分かれており、住所1は丁・番地・号まで、住所2は建物名を入力します。 回答で提示して頂いた、住所に使われるはずのない文字はすべてハイフンにするという方法で変換を行いたいのですが、どのようにすればよいでしょうか。AccessでもExcelでも構いませんのでご教示下さい。
わたしが同じ作業をすることになった場合、まず目視で確認するツールを作ると思います。 もし、もとのデータが1万件あったとしても、当てはまるのは数百件ではないでしょうか。
クエリで「-」「一」「-」など「ハイフン」の代わりに使われそうな文字を条件として全て当てはめたクエリを書き、そういった住所が含まれるデータを全て洗い出します。
結果が一覧として表示されるので、目視で確認にながら修正対象のデータを抽出します。
最後に対象となったデータを手動で修正します。 データシートで修正すれば素早く修正できるのではないでしょうか。
ずずやんさんの言われるように最終的には目視による確認後、手作業での修正になるとは思いますが、 丁・番地・号を区切る記号ということなので、その記号の前後は数字であるということだと思います。 とりあえず下記のような抽出条件で要修正のデーターをある程度絞り込めると思います。
Like "*#[ー一━]#*"
[]内にはハイフンの代わりに使われるような横棒の文字をいれてください。(とりあえず思いついた3文字をいれてます) これで、前後に数字のある横棒を含むレコードが抽出されます。
住所に使われる文字は郵便局のデータベースで確認することができます。ここにアラビア数字を含めれば住所に使われている文字を作ることができます。これだけで一仕事ですが ここに含まれていない文字があれば、「住所に使われるはずのない文字」となりますが、表記ゆれを考えれば、「リストにはない文字を使っているが正しい住所」のデータがあるかもしれません 文字一覧とのデータチェックもかなり大変です
雑に、楽にやるなら、「日本語」「アラビア数字」「-(ハイフン)」以外の文字ととらえて一括変換してしまえばそれっぽくなると思います
VBAで文字列から日本語を抽出する(Excel作業をVBAで効率化さん)
リンク先の例では「日本語だけを残す(日本語以外の文字を消す(空白に置き換える))」としているので、これにアラビア数字も含めて、置き換え文字を「-(ハイフン)」にしてやればそれっぽくなるんじゃないでしょうか
丁・番地・号を区切る-(ハイフン)に、別の似たような横棒の記号が使われている この横棒の記号をハイフンに変換したい というだけなら、上記の私の回答の方法で抽出して手作業でなんとかなるでしょう。(データ量にもよりますが)
ただ、無規則に入力されたデータは、実際はそれだけでは済まない場合がおおいでしょう。 厳密に住所データの正規化をしようとするとなかなか困難です。 Excel上で利用できる下記のようなWebサービスがありますので、それを使うのも検討されるといいかもしれません。
住所の統一 ★ | ExcelAPI 住所の分割 ★ | ExcelAPI
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 現在このグループでは通報を匿名で受け付けていません。 管理者グループにはあなたが誰であるかがわかります。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
トピックをWIKIWIKIに埋め込む
次のコードをWIKIWIKIのページに埋め込むと最新のコメントがその場に表示されます。
// generating...
プレビュー
Accessのテーブルやクエリのデータを貼り付ける場合は下記で、Markdown書式のテーブルに変換して貼り付けてください。
Markdown Tables generator
ここまでがあなたのコンテンツ
ここからもあなたのコンテンツ
無理ですよ。諦めてください
文字とデータの歴史はまぁ、いちいち語るほどでもないんでしませんが、そういう問題と常に戦ってきた歴史です。対処していないシステムから移行する際には全データ1件1件人の目でチェックしなおすしかありません
「住所録」なので例えば次のようなデータですかね
「ハイフン」の代わりに「漢数字の一」を使っているパターンは絶望的です。正しい住所として「漢数字の一」を使っている場合と区別がつきません
それ以外の「ハイフンの代わりの文字」であれば、文字を一文字ずつチェックして住所に使われるはずのない文字はすべてハイフンにするとできるかもしれません
稀に記号を屋号に入れていたりする例を見るので住所に使われるはずのない文字をうまく設定できるかも何とも言えませんけどね
「カタカナの伸ばし棒」と条件を付けているので上記の例を出していますが、建物名まで含まないような住所であれば、使われる文字も限定されるのでいくらかマシになるかもしれません
分割されていないのなら、どうやって区切るか?という新しい問題が発生しますが
すぐにでも直面する例を挙げてみましたが、他にもあれこれ出てくると思います。できることはせいぜい「住所に使わるであろう文字のみのデータはチェック済みとする」くらいでしょう。この「文字のチェック」をするならば、VBAで文字列チェックすればやれます
住所フィールドは1・2に分かれており、住所1は丁・番地・号まで、住所2は建物名を入力します。
回答で提示して頂いた、住所に使われるはずのない文字はすべてハイフンにするという方法で変換を行いたいのですが、どのようにすればよいでしょうか。AccessでもExcelでも構いませんのでご教示下さい。
わたしが同じ作業をすることになった場合、まず目視で確認するツールを作ると思います。
もし、もとのデータが1万件あったとしても、当てはまるのは数百件ではないでしょうか。
クエリで「-」「一」「-」など「ハイフン」の代わりに使われそうな文字を条件として全て当てはめたクエリを書き、そういった住所が含まれるデータを全て洗い出します。
結果が一覧として表示されるので、目視で確認にながら修正対象のデータを抽出します。
最後に対象となったデータを手動で修正します。
データシートで修正すれば素早く修正できるのではないでしょうか。
ずずやんさんの言われるように最終的には目視による確認後、手作業での修正になるとは思いますが、
丁・番地・号を区切る記号ということなので、その記号の前後は数字であるということだと思います。
とりあえず下記のような抽出条件で要修正のデーターをある程度絞り込めると思います。
[]内にはハイフンの代わりに使われるような横棒の文字をいれてください。(とりあえず思いついた3文字をいれてます)
これで、前後に数字のある横棒を含むレコードが抽出されます。
住所に使われる文字は郵便局のデータベースで確認することができます。ここにアラビア数字を含めれば住所に使われている文字を作ることができます。これだけで一仕事ですが
ここに含まれていない文字があれば、「住所に使われるはずのない文字」となりますが、表記ゆれを考えれば、「リストにはない文字を使っているが正しい住所」のデータがあるかもしれません
文字一覧とのデータチェックもかなり大変です
雑に、楽にやるなら、「日本語」「アラビア数字」「-(ハイフン)」以外の文字ととらえて一括変換してしまえばそれっぽくなると思います
VBAで文字列から日本語を抽出する(Excel作業をVBAで効率化さん)
リンク先の例では「日本語だけを残す(日本語以外の文字を消す(空白に置き換える))」としているので、これにアラビア数字も含めて、置き換え文字を「-(ハイフン)」にしてやればそれっぽくなるんじゃないでしょうか
丁・番地・号を区切る-(ハイフン)に、別の似たような横棒の記号が使われている
この横棒の記号をハイフンに変換したい
というだけなら、上記の私の回答の方法で抽出して手作業でなんとかなるでしょう。(データ量にもよりますが)
ただ、無規則に入力されたデータは、実際はそれだけでは済まない場合がおおいでしょう。
厳密に住所データの正規化をしようとするとなかなか困難です。
Excel上で利用できる下記のようなWebサービスがありますので、それを使うのも検討されるといいかもしれません。
住所の統一 ★ | ExcelAPI
住所の分割 ★ | ExcelAPI