エクセルバージョン
マイクロソフト365
本日は配列要素の文字列の全て,先頭,末尾の置換方法を解説します。
それではいってみましょう!
Menu
全ての文字を置換
全ての丼 → 空白に置換
1 2 3 4 5 6 7 8 9 10 11 12 | Sub replaceで置換() Dim ary() As Variant Dim i As Integer '①配列作成 ary = Array("牛丼", "豚丼", "かつ丼", "まぐろ丼", "鉄火丼", "丼物") '②繰り返し(Replaceで置換) For i = 0 To UBound(ary) ary(i) = Replace(ary(i), "丼", "") '③全ての丼を空白に置換 Next End Sub |
【解説】
➀配列を作成。
③VBAのReplace関数で全ての丼を空白に置換します(^o^)o
末尾の文字を置換
Like演算子を使用した例になります。
文字列の末尾の丼 → 空白に置換。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Sub likeで置換() '変数 Dim ary() As Variant Dim i As Integer '①配列作成 ary = Array("牛丼", "豚丼", "かつ丼", "まぐろ丼", "鉄火丼", "丼物") '②繰り返し検索(Like演算子で検索) For i = 0 To UBound(ary) If ary(i) Like "*丼" Then '③最後の文字が丼→trueだったら ary(i) = WorksheetFunction.Replace(ary(i), Len(ary(i)), 1, "") '④末尾の丼のみ置換 End If Next End Sub |
【解説】
➀配列を作成。
④ワークシート関数のReplace関数とLen関数で末尾の丼のみを空白に置換します!
先頭の文字を置換
正規表現(RegExp)を使用した置換の例です。
文字列の先頭が石→ 空白に置換。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Sub 正規表現で置換() '変数 Dim ary() As Variant Dim i As Integer '①配列作成 ary = Array("石版石", "石段石", "石灰石", "石盤石", "石鹸石") '②RegExpオブジェクトを作成 Dim rExp As Object Set rExp = CreateObject("VBScript.RegExp") '正規表現の設定 With rExp .Pattern = "^石" 'パターンを指定(先頭の文字が石) .IgnoreCase = False '大文字と小文字を区別(初期False) .Global = True '文字列全体を検索(初期値False) End With '③繰り返し検索(正規表現検索) For i = 0 To UBound(ary) If rExp.test(ary(i)) Then '④先頭の文字が石→trueだったら ary(i) = Replace(ary(i), "石", "", 1, 1) '⑤先頭の石を空白に置換 End If Next End Sub |
【解説】
➀配列を作成。
⑤VBAのReplace関数で先頭の石のみを空白に置換します\(^^)/
デバッグ方法 → 変数の中身の確認方法(ウォッチとブレイクポイント)
まとめ
VBAの配列要素の置換はReplace関数を上手に使用することで簡単に置換することができます(*^^)v
ワークシート関数のReplace関数とVBAのReplace関数では挙動が全然違うので、引数を上手く指定することにより今回のような置換が可能になります(*^^)v
以上です。