こんばんは。
以下は、A列を対象としていますから、もし違うようであれば、対象列を書き換えてください。
>・信号の色は黄色と( )と( )である。
の括弧は、全角でも半角でも、片方が全角で、片方が半角でも、中に空白が入っていても、入っていなくても、どちらでもよいです。ただし、括弧は、全部、全角括弧+括弧閉じるに変えられます。
並びのリストは、現在は、ア~ヨまで、44個しかありません。何を入れても構いませんが、途中で足りなくなるとエラーが出ます。
'標準モジュールが良いです。
'並びのリストは、コンマ切りで入れてください。
Private Const MYLIST As String = "ア,イ,ウ,エ,オ,カ,キ,ク,ケ,コ,サ,シ,ス,セ,ソ,タ,チ,ツ,テ,ト,ナ,ニ,ヌ,ネ,ノ,ハ,ヒ,フ,ヘ,ホ,マ,ミ,ム,メ,モ,ラ,リ,ル,レ,ロ,ワ,ヤ,ユ,ヨ"
Sub RegExpUsedMacro()
Dim c As Variant
Dim Ar As Variant
Dim Matches As Object
Dim Match As Object
Dim buf As String
Dim i As Long
Dim strPattern As String
'対象列 以下はA列
Const MYCOL As String = "A"
'リスト配列作成
Ar = Split(MYLIST, ",")
'パターン
strPattern = "([\((][^\((]*[\))])" '全角半角どちらでも可
With CreateObject("VBScript.RegExp")
.Pattern = strPattern
.IgnoreCase = True
.Global = True
Application.ScreenUpdating = False
For Each c In Range(MYCOL & "1", Range(MYCOL & "65536").End(xlUp))
If .Test(c.Value) Then
buf = c.Value
Set Matches = .Execute(buf)
For Each Match In Matches
'全角括弧
buf = Replace(buf, Match.Value, "(" & Ar(i) & ")", , 1)
i = i + 1
Next Match
c.Value = buf
End If
Next c
Application.ScreenUpdating = True
End With
End Sub
お礼
詳細な回答頂きありがとうございます。 お返事が遅くなりすみません。 大変参考になりました。 またお世話になるかもしれませんが、その際はよろしくおねがいします。