Microsoft Access 掲示板

ハイフン以外の横棒をハイフンに置換したい

6 コメント
views
4 フォロー

会社で使用しているExcel形式の住所録ですが、丁・番地・号を区切る-(ハイフン)に、別の似たような横棒の記号が使われていたり、果ては漢数字の一が使われている始末でほとほと困り果てております。

Excelファイルをインポートしたテーブルに、置換クエリでハイフン以外の横棒記号をハイフンにしたいのですが
どうすれば実現できますでしょうか。ただし、カタカナの伸ばし棒はハイフンに変換したくありません。

置換クエリ以外の実現方法があればその方法も教えて頂けますと幸いです。

Anonymous
作成: 2023/11/01 (水) 09:37:57
通報 ...
1
hiroton 2023/11/01 (水) 10:20:22 e636d@f966d

無理ですよ。諦めてください
文字とデータの歴史はまぁ、いちいち語るほどでもないんでしませんが、そういう問題と常に戦ってきた歴史です。対処していないシステムから移行する際には全データ1件1件人の目でチェックしなおすしかありません


「住所録」なので例えば次のようなデータですかね

ザワザワ村2-3 Excel一〇一号室
zawazawa村一丁目五番地 ワード3号棟404

「ハイフン」の代わりに「漢数字の一」を使っているパターンは絶望的です。正しい住所として「漢数字の一」を使っている場合と区別がつきません

それ以外の「ハイフンの代わりの文字」であれば、文字を一文字ずつチェックして住所に使われるはずのない文字はすべてハイフンにするとできるかもしれません

稀に記号を屋号に入れていたりする例を見るので住所に使われるはずのない文字をうまく設定できるかも何とも言えませんけどね

「カタカナの伸ばし棒」と条件を付けているので上記の例を出していますが、建物名まで含まないような住所であれば、使われる文字も限定されるのでいくらかマシになるかもしれません
分割されていないのなら、どうやって区切るか?という新しい問題が発生しますが


すぐにでも直面する例を挙げてみましたが、他にもあれこれ出てくると思います。できることはせいぜい「住所に使わるであろう文字のみのデータはチェック済みとする」くらいでしょう。この「文字のチェック」をするならば、VBAで文字列チェックすればやれます

2
Anonymous 2023/11/01 (水) 11:55:50 a3eb7@46fae >> 1

住所フィールドは1・2に分かれており、住所1は丁・番地・号まで、住所2は建物名を入力します。
回答で提示して頂いた、住所に使われるはずのない文字はすべてハイフンにするという方法で変換を行いたいのですが、どのようにすればよいでしょうか。AccessでもExcelでも構いませんのでご教示下さい。

3
すずやん 2023/11/01 (水) 12:04:33

わたしが同じ作業をすることになった場合、まず目視で確認するツールを作ると思います。
もし、もとのデータが1万件あったとしても、当てはまるのは数百件ではないでしょうか。

クエリで「-」「一」「-」など「ハイフン」の代わりに使われそうな文字を条件として全て当てはめたクエリを書き、そういった住所が含まれるデータを全て洗い出します。

結果が一覧として表示されるので、目視で確認にながら修正対象のデータを抽出します。

最後に対象となったデータを手動で修正します。
データシートで修正すれば素早く修正できるのではないでしょうか。

4

ずずやんさんの言われるように最終的には目視による確認後、手作業での修正になるとは思いますが、
丁・番地・号を区切る記号ということなので、その記号の前後は数字であるということだと思います。
とりあえず下記のような抽出条件で要修正のデーターをある程度絞り込めると思います。

Like "*#[ー一━]#*"

[]内にはハイフンの代わりに使われるような横棒の文字をいれてください。(とりあえず思いついた3文字をいれてます)
これで、前後に数字のある横棒を含むレコードが抽出されます。

5
hiroton 2023/11/01 (水) 13:45:42 e636d@f966d

住所に使われる文字は郵便局のデータベースで確認することができます。ここにアラビア数字を含めれば住所に使われている文字を作ることができます。これだけで一仕事ですが
ここに含まれていない文字があれば、「住所に使われるはずのない文字」となりますが、表記ゆれを考えれば、「リストにはない文字を使っているが正しい住所」のデータがあるかもしれません
文字一覧とのデータチェックもかなり大変です

雑に、楽にやるなら、「日本語」「アラビア数字」「-(ハイフン)」以外の文字ととらえて一括変換してしまえばそれっぽくなると思います

VBAで文字列から日本語を抽出する(Excel作業をVBAで効率化さん)

リンク先の例では「日本語だけを残す(日本語以外の文字を消す(空白に置き換える))」としているので、これにアラビア数字も含めて、置き換え文字を「-(ハイフン)」にしてやればそれっぽくなるんじゃないでしょうか

6

丁・番地・号を区切る-(ハイフン)に、別の似たような横棒の記号が使われている
この横棒の記号をハイフンに変換したい
というだけなら、上記の私の回答の方法で抽出して手作業でなんとかなるでしょう。(データ量にもよりますが)

ただ、無規則に入力されたデータは、実際はそれだけでは済まない場合がおおいでしょう。
厳密に住所データの正規化をしようとするとなかなか困難です。
Excel上で利用できる下記のようなWebサービスがありますので、それを使うのも検討されるといいかもしれません。

住所の統一 ★ | ExcelAPI
住所の分割 ★ | ExcelAPI