Excelの各セルを縦に読み込んで行き正規表現で整形しながら横のセルに出力するVBAのサンプルを紹介します。
仕様
ボタン押下後に、「変換前」の入力内容を正規表現で変換して、「変換後」に出力していきます。
ここでは正規表現の中身を「Bが連続して続いたら、B一文字に変換する」にしてみます。
ソースコード
Sub ボタン1_Click()
Dim i As Long
Dim maxRow As Long
minRow = 2
maxRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row '最終行
'正規表現オブジェクトの設定
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "B+" '正規表現パターン
.IgnoreCase = False '大文字と小文字を区別する
.Global = True '文字列全体を検索するか(True)
End With
For i = minRow To maxRow
Cells(i, 2).Value = reg.Replace(Cells(i, 1).Value, "B")
Next i
End Sub
設定
なお、ExcelVBAで正規表現を実行するためには、下記の設定が必要です。
設定内容
開発ツールの「Microsoft Visual Basic for Applications」のメニューバー「ツール(T) 」> 「参照設定(R)…」を順にクリックします。
「参照設定 – VBAProject」から「Microsoft VBScript Regular Expressions 5.5」を選択します。
テスト実行
ボタン押下前
ボタン押下前は3行目、4行目、5行目、に連続したBの文字列があります。
ボタン押下後
ボタン押下後に、B列に変換後の文字列が出てきました。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | Excel | Excel2016 |
以上です。