特定の文字を抜き出したい
多くのExcelデータを扱う際、よくありがちな悩みの一つが「データの抽出」です。
例えば住所録を扱うデータならば「都道府県だけ」や「市町村だけ」といったことがあります。
また電話番号を扱うデータならば「下4桁だけ」といったこともあり得ます。
片側からなら簡単に抜き出せる
単純に「右から〇文字」とか「左から〇文字」ということならば
RIGHT関数やLEFT関数を使えば解決します。
※RIGHT関数についてわからない方はこちら、LEFT関数についてはこちら
しかしデータの真ん中、しかも特定の文字から文字を抜き出すにはどうしたらよいのでしょうか?
答えは簡単で、MID+FIND関数を使用すれば解決できます。
つまりこう
以下で詳しく手順などを解説します。
解説
こちらが市名のみ抽出したいリストとなります。
今回は分かりやすくするため、リストの都道府県を絞っております。
まずはMID関数で市名を抽出します。
※MID関数についてわからない方はこちら
=MID(B3,4,3)
これで「仙台市」と抽出することができました。
ではこれを下にコピーするとどうでしょうか?
このように正しく抽出できませんでした。
開始位置や市名の文字数が都道府県によってバラバラだからです。
ではどうすれば一つの式でキレイに抽出できるのでしょうか?
まず正しいMID関数の中身を見てみましょう。
本来上記のような関数であれば正しく市名を抽出できます。
しかし、これをそれぞれ手入力すると関数を使用している意味がありません。
そこで使用するのがFIND関数です。
※FIND関数についてはこちら
分かりやすくするために隣の列に関数を追加します。
まず開始位置を指定します。
=FIND(“県”,B3)+1
まず=FIND(“県”,B3)の式で「左から”県”までの文字数は?」となり、これは「3」となります。
ですがMID関数で開始位置を指定する際、このままだと「県仙台市~」となってしまうため、+1を加えております。
これで開始位置が「仙(台市)」となる4を指定することができました。
コピーすると他のセルも同様にそれぞれの文字数に合った開始位置を指定することができました。
次に開始位置からの文字数を指定します。
ここで=FIND(“市”,B3)としたいところですが、それだと正しく出てきません。
文字数が6となってしまうため、「仙台市青葉区」までと表示されてしまいます。
そこでもう一つFIND関数で先ほどの6から引きます。
=FIND(“市”,B3)-FIND(“県”,B3)
FIND(“県”,B3)は先ほど出したように”県”までの文字数が3なので、6ー3で3となります。
他のセルも正しく文字数を出すことができました。
あとは今作成した関数をC列の開始位置と文字数に入れます。
=MID(B3,FIND(“県”,B3)+1,FIND(“市”,B3)-FIND(“県”,B3))
これで正しく市名まで抽出することができました。
他のセルも同様に正しく市名まで抽出できました。
まとめ
完成した関数を見ると「うわ、こんな関数作るなんて無理。。。」となってしまうかもしれませんが、
関数作成の際は分けて考えることがとても大事です。
今回開始位置と文字数で分けたように、別々の関数を作成しておいてから
後で組み合わせるというやり方は私もよく使います。
最初の作成時にまとめて作ると頭の中が混乱してしまうため、
情報を整理する上でもバラバラに作成してから後でまとめることを心がけましょう。
それではまた。