エクセル表のセル内の文字をプログラムで編集するには

エクセルのデータを修正したい

エクセル表のデータの一部を修正することってありますよね。

単純に文字列を置き換えるだけなら「置換」すれば簡単にできます。でも、決まりがあって、ある条件のときだけ修正する となるとそうはいきません。

例えば、「悪徳商会(株)」のように(株)がついているときに「株式会社」に変更したい。ただし「(株)熱造電機」のように前に株がついているときは変換しない、などというときどうすればいいでしょうか?

  • 「悪徳商会(株)」→「悪徳商会株式会社」あと株を株式会社に変換
  • 「(株)熱造電機」→「(株)熱造電機」 前株は変換しない 

InStrでキーワードの位置を探せ

VBAでプログラムを作れこんな方法です。ちなみに InStr は指定する文字がいくつ目にあるかを調べる関数です。(細かい説明は読み飛ばしてもかまいません)

  1. 変数(KaishaMeiとします)にその会社名を代入する
  2. InStr関数を使ってKaishaMeiの中に「(株)」がいくつ目にあるか探す
  3. もし0か1以外、つまり1より大きければ(株)を株式会社に置き換えて、(株)より左にあった文字+株式会社+(株)より右にあった文字 を新しいKaishaMeiとする

KaishaMei = Cells(2,3).Value
Num = InStr(KaishaMei, “(株)”)
If Num > 1 Then
KaishaMei = Left(KaishaMei,Num-1) & “株式会社” & Right(KaishaMei,Len(KaishaMei)-(Num+2))
End If

変数に入れてしまえばこっちのもの

プログラムの中身まで見てもらわなくてもいいのですが、ここで言いたいことは、エクセルのセルに書かれたデータを変数に入れてしまえばVBAのプログラム内で自在に検索や編集ができる
ということです。

エクセルのメニュー画面からの操作や関数ではできない複雑なこともVBAのプログラムを作ってしまえば自在にできるのです。

あべっかんが開催しているエクセルプログラミング初級勉強会のうち、文字列の編集編では、「文字列の編集」の方法も説明します


エクセルプログラミング初級勉強会

少人数制の勉強会を毎月行っています。

4/20(土)文字列の編集編 at 秋葉原
4/28(日)マクロ編 at 横浜
横浜や東京で毎月やっています。3時間の勉強会で5000円。
クイズ形式で教えるなど、初心者向けに工夫をしています。詳しくはこちら