VBAの資格取得を応援する「パソコン教室ISA」ライターチームです。
エクセルであとから文字列や数値を置換する作業はよくあります。それが自分の作った資料だったらいいのですが、他の人のファイルやシートを集計していると、毎回置換をしないといけない・・・。そんな悩みを持つ方に向けた記事です。
Replace関数で置換する
セル内の数値や文字列を置換するにはReplace関数を使います。
Replace 関数の基本構文
例えば、セルA1にある”物流”という文字列を”ロジスティクス”に変更したいという場合、構文にあてはめると次のようになります。
Repalace(Range(“A1”), “物流”, “ロジスティクス”)
しかし、これだけでは構文エラーとなってしまい、プロシージャが実行できません。初心者の方がよくつまずくポイントです。以下の記述に変更をしましょう。
Range(“A1”) = Replace (Range(“A1″),”物流”,”ロジスティックス”)
エクセルと同様、関数は()内の引数に何らかの処理をした結果を「返す」ものです。その結果を返すオブジェクトを左辺で指定する必要があります。VBAの構文は原則としてオブジェクトで始まるという点に注意が必要です。
パソコンスクールISA
Office・IT・プログラミング等の
パソコンスキルアップを徹底サポート!
東京、横浜、埼玉、千葉の
最寄駅5分以内!オンライン授業も
\ VBA試験の詳しい情報を受け取る /
繰り返し処理と組み合わせて対象セル範囲を置換する
単一のセルだけではなく、セル範囲に置換を行う方法を確認しましょう。上の例のようにオブジェクトとして指定するセルと置換したい対象セルは同じです。そこでfor nextステートメントで変数を動かして繰り返し処理を行います。
以下の表でF列にある”営業”という文字列を”企画”に置換します。
Dim i
For i = 2 To 20
Cells(i , 6)=Replace(Cells(i , 6), “営業” , “企画”)
Next i
次の流れで処理をしています。
- カウンタ変数 i を宣言
- 変数 i に2から20を代入して、20行目まで繰り返し処理
- F列の2から20行目にReplace関数が返す結果を代入
パソコンスクールISA
Office・IT・プログラミング等の
パソコンスキルアップを徹底サポート!
東京、横浜、埼玉、千葉の
最寄駅5分以内!オンライン授業も
繰り返し処理の最終行の変化に対応する
ここまでの操作であれば、実際はエクセルの置換機能を使って手動で行えばいい話です。データがどこまで入っているか分からない、都度変わるという場合にVBAが真価を発揮します。先ほどのコードを以下に変更します。
Dim i
For i = 2 To Cells(Rows.Count, 6).End(xlUp).Row
Cells(i , 6)=Replace(Cells(i , 6), “営業” , “企画”)
Next i
マーカー部分の変更によりF列に連続して入っているデータの最終行を取得することができます。
置換はエクセルでよく使う操作なので、VBAで自動化の効果も高いところです。この記事ではReplace関数の基本的な使い方を紹介しましたが、実務に生かすには繰り返し処理との組み合わせが必須です。VBAの基本は体系的に学習しないとどこかで行き詰ることも多いです。体系的に学習をしたい場合は、パソコン教室や通信講座で学ぶのがおすすめです。
中でも、40年近い教室運営の実績を有するISAパソコン教室は、豊富な種類のVBA取得コースを提供しています。講師をすべて社員として教育の質を担保するなどの取り組みにより、日本マイクロソフトが1年に1社を選ぶLeaning Awardを10年間で3度受賞しています。効率的かつ質の高い学びの場を求める方は、下記の資料をご確認ください。