質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

951閲覧

クレンジング作業における住所の置換について

KoheiNoma

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2020/04/20 10:40

クレンジング作業における住所の置換について質問があります。

以下をVBAのスクリプトで実現したいと思っています。構文 Object.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte)を使いつつ、以下の条件を達成するものがあれば教えていただけると幸いです。また別のメソッドを使用する方法でも大丈夫です。

・〇番地〇号のように「番地」の後ろに何らかの文字が続きかつそれが数字であるならば「番地」を「-」に変換
・〇番地のように「番地」で終わる場合は「番地」を「」に変換

何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

もし、文字列に番地があるときは、
「番地」で文字列を分けて、さらに、
もし、分けたときに右側が0文字以上の時と0文字の時に、
条件分岐して連結文字を変えて、
後で繋ぎ押してはいかがでしょうか?

番地が2回以上文字列の中に存在することをチェックするなら、
さらに一工夫必要ですが。

ExcelVBA

1Sub test() 2 Dim v 3 Dim vv 4 Dim s As String 5 Const ss As String = "番地" 6 7 For Each v In Array("〇番地〇号", "〇番地", "〇〇") 8 vv = v 9 10 If InStr(v, ss) > 0 Then 11 vv = Split(v, "番地") 12 If Len(vv(1)) > 0 Then 13 s = "-" 14 Else 15 s = "「」" 16 End If 17 vv = Join(vv, s) 18 End If 19 20 MsgBox vv 21 Next 22End Sub

あぁあああ。。。。。。
セル範囲を一括で置換したいという事なら、再考します。

置換機能でやるなら、単純には出来ないので、
作業列や作業シートを使って、
順次加工していく感じになると思います。
数式を使うことも視野に入れると、柔軟に対応できるかと思います。

上のサンプルの考え方を踏襲するなら、
データの区切り位置とかの機能を使ってもいいですね。
あとはアイデア次第で、使えるものを使い倒す感じでどうですかね?

投稿2020/04/20 13:35

編集2020/04/20 13:43
mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoheiNoma

2020/04/23 17:03

ご丁寧にありがとうございます!こちらのマクロでトライしてみます。
guest

0

正規表現を使うとよいと思います。

https://www.sejuku.net/blog/33541

マクロを組むのがめんどくさいようであればアドインを使うとよいです。
https://did2memo.net/2017/01/17/excel-regular-expression-search-and-replace/

投稿2020/04/20 13:04

TaroToyotomi

総合スコア1430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoheiNoma

2020/04/23 17:04

ありがとうございます!やはり正規表現使うのが良いのですね。この機会にしっかり正規表現勉強してトライしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問