エクセルVBAで複数の文字列・単語をまとめて連続置換する方法

自力で老眼回復

こんにちは~。「デザインもできるシステムエンジニア」のあつもり(@atumori17)です。今日も業務効率化のアイデアを発信していきますっ!

エクセルには文字列を置き換える「置換」という機能があるのはご存知だと思います。日常業務の中でとても頻繁に使われる機能のひとつですよね。

さてこの「置換」ですが、1つの単語だけではなく、複数の単語を1度に置き換えたいと思ったことはありませんか?

例えば

  • 洋服の商品マスタがあり、そのデータを整形するような場合です。色にBK、WHなどの略字が使われているので正規の表現に戻したい。
  • エクセルでマニュアルを作ったけど、句読点やカッコに半角、全角が入り混じっているのでどちらかに統一したい。

どちらも置換した単語が複数個あるので、何度も置換しなければならず不便ですよね。

こういったケースの場合、下図のような変換表どおりに連続置換できたら便利ですよね。というわけで今回は「複数の文字列・単語をまとめて連続置換する方法」を紹介したいと思います。

レクタングル大336×280

複数の単語をまとめて連続置換プログラムの作成

それではさっそくエクセルVBAを使って連続置換プログラムを作っていきましょう。

エクセルファイルにボタンを追加する

まずは「連続置換.xls」という名前のファイルを作りデスクトップに保存します。

ワークシートに起動ボタンを配置します。

作った起動ボタンのクリックイベントに下記のようなプログラムコード書きます。プログラムコードを書く場所はシートモジュールの中です。

続いてワークシートに下図のような置換表を作ります。シート名を「置換表」にして下さい。

ユーザーフォームの作成

今度はユーザーフォームを作っていきます。新規でユーザーフォームを作成しボタンを配置します。ボタンの表示は「連続置換」にしてください。

ここまででユーザーインターフェース部分の作成は終わりです。

サンプルコードを貼り付ける

次にプログラムコードをモジュール内に貼り付けます。

「連続置換」ボタンをダブルクリックしてコードウィンドウを開きます。「CommandButto1_Click()」の下に以下のコードを貼り付けます。

プログラムコードの解説

それではプログラムコードの解説をしていきます。重要なポイントに絞って説明していきます。全体の流れは過去に掲載した記事と同じですので、参考にしてみてください。

エクセルVBAでセル内の文字列に含まれる改行を一括で削除する方法
ワークシートのセル内にある改行を消したいって思ったことありませんか?データを別のアプリケーションに取り込んだり、データベースに登録したりするときに改行が邪魔になることがあります。そんな時に改行を一括で削除できるツールがあったら便利ですよね。

プログラム全体の流れは以下のようになります。

  1. 処理対象列を選択する
  2. 処理対象ワークシートのデータを1行ずつ取り出す
  3. 置換表ワークシートの数だけ置換を繰り返す

ワークシートをオブジェクト変数に入れる

ワークシートをオブジェクト変数に入れることでプログラムの可視性が上がります。ワークシート自体を変数として扱えるため短いコードでプログラムを書くことができます。

オブジェクト変数を使った場合

オブジェクト変数を使わない場合

オブジェクト変数を使ったほうがコードが短くなりすっきりしていますよね。オブジェクトを変更したときのメンテナンスも楽になります。

Setステートメントでオブジェクト変数を使う

まずは変数の宣言ですが次のようにします。

Dim オブジェクト変数 As オブジェクト型

オブジェクト型はWorksheetのほかにWorkbook、Rangeなどがあります。

続いてSetステートメントを使ってオブジェクト変数にワークシートを格納します。

Set オブジェクト変数 = オブジェクト

このようにすることでオブジェクト変数を使ってワークシートを操作することができるようになります。

Do Loopステートメントを使って置換項目ぶん繰り返す

Do 条件式
処理
Loop

このようにすることで条件式が真になるまで処理を繰り返し実行させることができます。

今回のプログラムを見てみましょう。上記コードの42行目にあたります。

この場合、置換表の1列目のデータがなくなるまで処理を続けるということになります。

プログラムコードの解説は以上です。

複数の単語を連続置換するプログラムの動作確認

それでは実際に出来上がったプログラムを動かしてみましょう。

ワークシートの起動ボタンを押します。

処理対象のシートに移動します。連続置換ボタンを押し、処理をしたい列を選択します。ダイアログボックスのOKボタンを押します。

置換表のルールに従って文字が置換されました。

まとめ

いかがでしたか?今回はエクセルVBAで複数の文字列・単語をまとめて連続置換する方法を紹介しました。

今回の内容は以下のようになります。

  • 置換表をワークシート上に作成する
  • ワークシートをオブジェクト変数に入れる
  • Do until文でセルのデータがなくなるまでループさせる

それではまた~。

レクタングル大336×280
レクタングル大336×280

シェアする

  • このエントリーをはてなブックマークに追加

フォローする