バージョン
マイクロソフト365
本日は文字列を指定して置換ができるReplace関数について解説していきたいと思います。
それではいってみましょう(^O^)
Menu
Replace関数
・文字列を指定して置換します。
・文字列の中に重複文字がある場合、その回数を指定して置換できます。
構文
Replace(expression, find, replace, [ start, [ count, [ compare ]]])
[ ]は省略可。
引数
Replace | 必須/省略可 | 詳細 |
expression (第1引数) | 必須 | 置換前の文字列を指定。 |
find (第2引数) | 必須 | 置換前の文字列から置換したい文字を指定。 |
replace (第3引数) | 必須 | 置換後の文字列を指定。 |
start (第4引数) | 省略可 | 置換前の文字列の開始位置を指定。 ・省略 → 1 |
count (第5引数) | 省略可 | 置換前の文字列に同じ文字が複数ある場合、置換の回数を指定。 |
compare (第6引数) | 省略可 | 比較の種類を示す数値を指定。 |
サンプル
指定した文字を置換
置換前の文字列の中から文字を指定して、一致した文字のみ置換できます。
1 2 3 4 5 | Sub Replace_Sample2() '牛丼と豚丼とカツ丼 → 牛丼と豚丼と親子丼 Debug.Print Replace("牛丼と豚丼とカツ丼", "カツ丼", "親子丼") End Sub |
【結果】
カツ丼を → 親子丼に置換できます( ゚∀ ゚)
【変更前】牛丼と豚丼とカツ丼
【変更後】牛丼と豚丼と親子丼
置換の回数指定
置換前の文字列に重複する同じ文字がある場合は、第5引数を数字指定で置換の回数を指定できます。(今回は3つの重複する文字を置換してみます)(^o^)o
1 2 3 4 5 | Sub Replace_Sample3() '牛丼,牛丼,牛丼,牛丼,牛丼 → 豚丼,豚丼,豚丼,牛丼,牛丼 Debug.Print Replace("牛丼,牛丼,牛丼,牛丼,牛丼", "牛丼", "豚丼", 1, 3) End Subか |
【結果】
先頭から3つの牛丼のみ → 豚丼に変更できます(^o^)o
【変更前】牛丼,牛丼,牛丼,牛丼,牛丼
【変更後】豚丼,豚丼,豚丼,牛丼,牛丼
先頭の文字のみを置換
文字列の先頭の文字のみを指定して置換。
今回はA列の文字列の先頭の1を空白に置換します。
【今回使用するデータ】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Option Explicit '①定数 Const STARTROW As Integer = 2 'データの行頭番号を指定 Const COL1 As Integer = 1 'データの変更前の列番号を指定 Const COL2 As Integer = 2 'データの変更後の列番号を指定 Sub 先頭の値のみ置換() '変数 Dim intRow, lastRowNum As Integer '②データの最終行番号を取得 lastRowNum = Cells(Rows.Count, COL1).End(xlUp).Row '③繰り返し処理(For~Next) For intRow = STARTROW To lastRowNum '④like演算子でA列の最初の数字が1→trueだったら If Cells(intRow, COL1) Like "1*" Then '⑤B列に先頭の数字の1を置換 Cells(intRow, COL2) = Replace(Cells(intRow, COL1), 1, "", 1, 1) End If Next End Sub |
【解説】
①定数Constでデータの行頭番号、変更前の列番号、変更後の列番号が指定できるようにします。
②データの最終行番号を取得します。
③繰り返し処理で1行ずつ処理を行っていきます。
➃IF文とLike演算子で先頭の文字が1だったらの検索をします。
⑤先頭の1のみ空白に置換します。
【結果】
A列のデータを、B列に先頭の1のみを空白に置換して完成です\(^^)/
末尾の1は置換されてないのが確認できます。
【変更前】 【変更後】
まとめ
VBAのReplace関数には6個の引数があります。
基本的にVBAのReplace関数は文字列を指定して置換することが目的ですが、その他の引数も頭の片隅にいれておくことで業務で柔軟に対応ができます。
他の関数や演算子、IF文を組み合わせることで今回のような置換も可能になりますので、ご自身で色々な置換方法を見つけてみてください(^^♪
・配列の文字列の置換も下記で解説しています!
【エクセルVBA】配列要素の文字列を置換(先頭,末尾,全て)
以上です。
文字を抜き出す(左と右)
【VBA】 文字の左や右から文字を抜く(Left,Right)
文字を抜き出す(指定位置から指定文字数)
【関数】指定位置から指定文字数を抜き出す(MID,MIDB)
文字の位置を取得
【関数】指定した文字の位置を文字列から検索(FIND,FINDB)
【関数】文字の位置番号を取得(SEARCH,SEARCHB)
文字数を取得
文字を置換する
【関数】指定位置から何文字や何バイト指定して置換(REPLACEとREPLACEB)
【VBA】配列の文字列を置換(先頭,末尾,全て)Replace