【エクセル時短】は「少しでも早く仕事を終わらせたい!」というビジネスパーソンのみなさんに、Excelの作業効率をアップするワザをお届けする連載です。
改行位置の前後の文字をそれぞれ抽出する
Excelで[Alt]+[Enter]キーを押すと、セル内に改行を挿入可能です。セルの中身を見やすくする便利な機能ですが、ファイルを編集していく過程で不要になり、あとから削除したくなることもあります。
セル内の改行を一括で削除する方法はいくつかありますが、改行位置でセルの中身を別々のセルに分割しようとすると、どのように操作すべきか悩みます。一括置換を用いてセル内にタブを挿入すれば解決できそうですが、Excelの仕様上できません。
最初はセル内を改行して入力していたデータを、後々その改行位置で分割したくなる場面は少なくありません。
セルそのものを分割するのではなく、改行位置の前後のデータをそれぞれ抽出する方法を考えましょう。関数を用いて改行位置を見つけ、その前後の文字数を調べ、指定した文字数分の文字列を取り出します。
セル内のデータから改行位置を見つけるのに重宝するのがCHAR関数です。CHAR関数は、引数に指定した文字コードに対応する文字を返す関数で、改行はCHAR(10)で表します。
次に、改行位置までの先頭と末尾からの文字数を調べます。FIND関数を使うと、指定した文字列が何文字目にあるかが分かります。
=FIND
(検索文字列, 対象, 開始位置)
[検索文字列]が[対象]のうち、[開始位置]から何文字目にあるかを調べます。[開始位置]を省略した場合は、先頭から検索します。
最後に、改行位置までの文字数分の文字列を取り出すのに、LEFT関数とRIGHT関数を使います。LEFT関数は、指定した文字数分を左から、RIGHT関数は、指定した文字数分を右から取り出す関数です。
=LEFT
(文字列, 文字数)
[文字列]の左から、[文字数]で指定した文字数分の文字列を取り出します。
=RIGHT
(文字列, 文字数)
[文字列]の右から、[文字数]で指定した文字数分の文字列を取り出します。
以上で、使用する関数の構文をひととおり紹介しました。ここからは、実際に操作しながら動きを確認しましょう。
LEFT関数、FIND関数、CHAR(10)で改行位置までを取り出す
「都道府県名+改行、市区町村名」が入力されたセルを例に、「改行位置」を探して都道府県名を取り出してみます。改行位置をFIND関数で探してから、それをLEFT関数で取り出せばよさそうです。入力する数式は以下の通りです。
=LEFT(A1,FIND(CHAR(10),A1)-1)
もっとも内側の「CHAR(10)」は改行位置を表します。ポイントは「FIND(CHAR(10),A1)-1」の「-1」です。「CHAR(10)」で探せるのは改行位置そのものなので、「-1」を付けることで、改行位置の1文字手前までの文字数を取得できます。この文字数分をLEFT関数を使って左から取り出すことで、都道府県名のみを抽出できます。
1関数式を入力する
セルB1に「=LEFT(A1,FIND(CHAR(10),A1)-1)」と入力します。
2改行より前の文字列を取り出せた
改行位置より前にある都道府県名を取り出せました。
RIGHT関数、FIND関数、CHAR(10)で改行位置から後ろを取り出す
今度は「改行位置」を探して、その後ろをすべてを取り出します。末尾から改行位置までの長さを調べるわけですが、改行の後ろの市区町村以降の文字列の長さは一定ではないので、少し工夫がいります。
難しく考える必要はなく、セルに入力されている文字列の長さから改行位置の文字数を引けば、改行文字以降の文字列の長さがわかります。文字列の長さを調べるのには、LEN関数を使います。構文は以下の通りです。
=LEN
(文字列)
[文字列]の文字数を求めます。
末尾から改行位置までの文字数を求める数式は以下になります。
=LEN(A1)-FIND(CHAR(10),A1)
この数式の結果が、末尾から改行位置までの文字数になるので、RIGHT関数と組み合わせれば問題解決です。
=RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1))
1関数式を入力する
セルC1に「=RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1))」と入力します。
2改行より後ろの文字列を取り出せた
改行位置より後ろの文字列を取り出せました。
LEFT関数、RIGHT関数、FIND関数、LEN関数の組み合わせは、文字列抽出の定番ですが、「CHAR(10)」と組み合わせることで、改行位置で別々のセルに分割することができます。