見習いエンジニアがゆく

見習いエンジニアの勉強帳 VBA・NWなどなどITの勉強用ブログです。のんびり、のんびり。

Excel VBA 『関数』 Replaceの使い方

こんばんは。ハイルナーです。

今回は文字の置換ができる「Replace」関数を紹介します。

 

 

Replace関数

引数に指定した「文字列」の中から「検索文字列」を「置換文字列」に置き換えることができます。

 

構文

Replace(文字列, 検索文字列, 置換文字列)

 

 例)

Sub 置換()
    MsgBox Replace("支払:未", "未", "済")
End Sub

 「支払:未」という文字列の「未」(検索文字列)を「済」(置換文字列)に置換するので、「支払:済」が画面に表示されます。

 

セルのデータをReplace関数で置換しよう

f:id:melancholy198x:20190120102458j:plain

Replace関数で置換

やりたい処理1

A1セルの「今日の天気は腫れ」の「腫れ」を「晴れ」にReplaceで置換する

 

例)

Sub otenki()
    Cells(1, 1).Value = Replace(Cells(1, 1), "腫れ", "晴れ")
End Sub

f:id:melancholy198x:20190120103004j:plain

結果

やりたい処理2

A1セルの「今日の天気は晴れ」の「今日」を明日、「晴れ」を「曇り」にReplace関数で置換して、A2セルに代入する

 

例)

Sub otenki2()
    Cells(2, 1).Value = Replace(Replace(Cells(1, 1), "今日", "明日"), "晴れ", "曇り")
End Sub

f:id:melancholy198x:20190120103427j:plain

結果

Cells(行, 列)でセルを指定できるので、A1セルはCells(1,1)、A2はCells(2, 1)ができます。B1セルはCells(1,2)です。

今回は置換したい箇所が2つあるので、Replace関数の中にReplace関数を入れています。

中のReplace関数「Replace(Cells(1, 1), "今日", "明日")」で、「今日」を「明日」に置換して、その置換後の文字列を「 Replace(Replace(Cells(1, 1), "今日", "明日"), "晴れ", "曇り")」で「晴れ」を「曇り」に置換しています。

 

 

For~Next文を使ってReplace関数を試してみよう

次はExcelのワークシートのデータを置換したいと思います。

 

f:id:melancholy198x:20190120101649j:plain

Replace関数の実践

 

上図のように元は有限会社と株式会社が混在しているデータの「有限」をすべて「株式」に置換をする処理を行いたいと思います。

ではそのコード例を見てみましょう。

 

例)

Sub replaceCompany()
    '変数iと変数lastRowを宣言する
    Dim i As Long, lastRow As Long


    '変数lastRowにA列でデータが入っている最終行数を代入する
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
   
    '2~lastRow(最終行数)のループ処理を行う
    For i = 2 To lastRow
        'Replaceで有限を株式に変換する
        Cells(i, 1).Value = Replace(Cells(i, 1), "有限", "株式")
    Next i


    'ループが終わればMsgBoxを表示させる
    MsgBox "有限を株式に置換しました"
End Sub

 

For~Nextはループ処理のステートメントです。

構文

For 変数名 = 初期値 To 終了値

 処理

Next 変数名

 

初期値の数から終了値の数を変数に順番に代入して、処理を繰り返します。

例の以下部分だと2から10までを順番に変数iに代入して、繰り返し処理をしています。

    For i = 2 To lastRow
        'Replaceで有限を株式に変換する
        Cells(i, 1).Value = Replace(Cells(i, 1), "有限", "株式")
    Next i

 

最初のループでは、iが2なので「Cells(2,1).Value = Replace(Cells(2,1), "有限", "株式")という処理をおこないます。次はiが3に変わって、iが10になって処理を終えるまで繰り返します。

iが変わることで、Cells(2,1)~Cells(10,1)のデータの処理を行っています。

 

 

Replace関数で半角スペース、全角スペースを削除しよう

f:id:melancholy198x:20190120103740j:plain

上図のように半角スペース、全角スペースがバラバラのデータがあります。

 

やりたい処理1

A1の半角スペース、A2の全角スペースをReplace関数で削除する

 

例1)

Sub spaceDel()
    Cells(1, 1).Value = Replace(Cells(1, 1), " ", "")
    Cells(2, 1).Value = Replace(Cells(2, 1), " ", "")
End Sub

 

やりたい処理2

A1~A5の半角スペース・全角スペースをすべて削除する

例2)

Sub spaceDel2()
    Dim i As Long, lastRow As Long
   
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lastRow
    Cells(i, 1).Value = Replace(Replace(Cells(i, 1), " ", ""), " ", "")
    Next i
End Sub

この例でもReplaceの中にReplaceを入れて、2つの置換を行っています。

半角スペースをなくす置換と、全角スペースをなくす置換処理を行っています。

 

最後までお読みいただき、ありがとうございました。