この記事では、VBAにて右から特定の文字まで抽出・削除する方法【マクロで文字列の右側】について解説していきます。
VBAで右から指定文字までを抽出・削除するサンプルコードをいくつかのパターンで紹介していきますので、ぜひチェックしてみてください。
目次
VBAで文字列の右から特定文字までの抽出:特定文字移行を抽出【関数化】
VBAマクロにて特定文字以降を取得するコードは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 |
Function ExtractRightUntil(inputString As String, targetChar As String) As String Dim position As Long position = InStrRev(inputString, targetChar) If position > 0 Then ExtractRightUntil = Right(inputString, Len(inputString) - position) Else ExtractRightUntil = "" End If End Function |
このコードをAlt+F11にてVBE画面を開き、そこに貼り付けましょう。
すると、ExtractRightUntilという名前の関数ができます。この関数は、
=ExtractRightUntil(指定文字列, 特定文字)
という構文で使用することができます。
以下のサンプルにて特定文字を「習」として、右から抽出していきます。
作った関数の通り、=ExtractRightUntil(A1,”習”)と任意のセルに入れましょう。
ENTERを入れ、オートフィルでコピーすれば特定文字以降の抽出が完了です。
VBAマクロで右から特定文字まで文字列を抽出するコード【関数にせず、隣の列に出力】
上では関数にしてみましたが、実行ボタン一つで完了させたい人もいることでしょう。
ここでは、対象セルを選び実行すると、特定文字以降の文字列を「隣の列」に返すマクロを準備しました。
私は、以下の targetChar = “特定の文字”を targetChar = “習”にしてみました。
あなたが使う場合は、特定文字を好きなものにご変更くださいませ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub ExtractRightUntilInSelectedCells() Dim targetCell As Range Dim inputString As String Dim targetChar As String Dim position As Long Dim extractedText As String ' 特定の文字を設定 targetChar = "特定の文字" For Each targetCell In Selection inputString = targetCell.Value position = InStrRev(inputString, targetChar) If position > 0 Then extractedText = Right(inputString, Len(inputString) - position) Else extractedText = "" End If targetCell.Offset(0, 1).Value = extractedText Next targetCell End Sub |
実行してみましょう!
うまくいきましたね(^^)/
マクロでの右から特定文字までの削除する方法【関数化】
今度は指定文字以降の文字列を削除する関数を作ってみましょう(LEFT+FINDなどが一般的かもですが笑)。勉強も兼ねてですね(^^)/
1 2 3 4 5 6 7 8 9 10 11 |
Function RemoveRightUntil(inputString As String, targetChar As String) As String Dim position As Long position = InStrRev(inputString, targetChar) If position > 0 Then RemoveRightUntil = Left(inputString, position - 1) Else RemoveRightUntil = inputString End If End Function |
Alt+F11でVBE画面に貼り付けます。
この状態で、上と同様に
=RemoveRightUntil(対象セル, 特定文字)
という構文で使えばOK。
右から特定の文字列まで削除
Sub RemoveRightUntilInSelectedCells()
Dim targetCell As Range
Dim inputString As String
Dim targetChar As String
Dim position As Long
Dim updatedText As String
‘ 特定の文字を設定
targetChar = “特定の文字”
For Each targetCell In Selection
inputString = targetCell.Value
position = InStrRev(inputString, targetChar)
If position > 0 Then
updatedText = Left(inputString, position – 1)
Else
updatedText = inputString
End If
targetCell.Value = updatedText
Next targetCell
End Sub