回答編集履歴

2

数字の後に「号又は号室」で終わる場合は、OKとするようにしました。

2023/09/19 04:49

投稿

tatsu99
tatsu99

スコア5540

test CHANGED
@@ -24,7 +24,7 @@
24
24
  Dim rematch As Object
25
25
  building = ""
26
26
  Set RE = CreateObject("VBScript.RegExp")
27
- RE.Pattern = "([0-90-9])([^0-90-9]+)([0-90-9])*$"
27
+ RE.Pattern = "([0-90-9])([^0-90-9]+)([0-90-9])*(号|号室)?$"
28
28
  RE.Global = True
29
29
  Set rematch = RE.Execute(addr)
30
30
  If rematch.Count < 1 Then Exit Sub
@@ -34,4 +34,6 @@
34
34
  全て、上記のパターン通りならこれで問題ないはずですが、例外がある場合は、その都度対応が必要かと思います。
35
35
  このマクロでは
36
36
  東京都○区○○1丁目漢字荘123 は "丁目漢字荘" を抽出します。
37
- 東京都○区○○1丁目1漢字荘123号室 は "号室" を抽出します。
37
+ ~~東京都○区○○1丁目1漢字荘123号室 は "号室" を抽出します。~~
38
+ 提示されたケース以外に例外があるようでしたら、追記してください。
39
+ 対応可能であれば、対応します。

1

回答に補足を付け足しました。

2023/09/19 03:37

投稿

tatsu99
tatsu99

スコア5540

test CHANGED
@@ -1,5 +1,6 @@
1
1
  提示された例をみると、以下の方法でとりだすことができそうです。
2
2
  数字と数字の間に挟まれた数字以外で構成される文字列。
3
+ 上記の文字列が取り出せれば、建物名となります。
3
4
  ```vba
4
5
  Sub ExtractData()
5
6
  Dim rng As Range