「住所録から都道府県名を取り出したい」エクセルでリストを作っていると、その中の一部の文字列だけ抜き出したい時があります。
しかし、特定の文字列を目視で抽出するとなると意外と難しいものです。
そして、時間も掛かりますよね。
そんな時は当記事でご紹介する方法でスパッと抜き出してみましょう。
ここでは文字列を抽出するために使える4つの関数や、文字列抽出の応用テクニックを紹介します。
これを覚えれば作業が簡単になること間違いなしですよ!
1.文字列を抽出するための4つの関数
では始めに文字列を抽出するための4つの関数を紹介します。
場面によって使い分けると思い通りに文字列が抽出できるようになるので、全部覚えてしまいましょう。
1-1.LEFT関数の使い方
まずはLeft関数の使い方からですが、Left関数は「文字列の先頭(左)から指定の文字数抜き出すことができる」関数となっています。
書式は「=LEFT(文字列,文字数)」の形となっており、文字列の所には「抜き出し元の文字列」を、文字数の所には「先頭から抜き出したい文字数」を入力します。
上の例では、Left関数を使ってセルA1の文字列から先頭3文字の「東京都」を抜き出しています。
このように、Left関数は「文字列の先頭から〇文字取り出したい」時に使うものになっています。
1-2.RIGHT関数の使い方
次にRight関数の使い方です。
Right関数は「文字列の末尾(右)から指定の文字数抜き出すことができる」関数となっています。
書式は「=RIGHT(文字列,文字数)」の形となっており、文字列の所には「抜き出し元の文字列」を、文字数の所には「末尾から抜き出したい文字数」を入力します。
上の例では、Right関数を使ってセルA1の文字列から末尾3文字の「大手町」を抜き出しています。
このように、Right関数は「文字列の末尾から〇文字取り出したい」時に使うものになっています。
1-3.MID関数の使い方
続いてMid関数の使い方です。
Mid関数は「文字列中の指定の開始位置から指定の文字数抜き出すことができる」関数となっています。
書式は「=MID(文字列,開始位置,文字数)」の形となっており、文字列の所には「抜き出し元の文字列」を、開始位置の所には「抜き出し始める文字の左からの位置」を、文字数の所には「抜き出したい文字数」を入力します。
上の例では、Mid関数を使ってセルA1の文字列から開始位置4文字目、文字数4文字で「千代田区」を抜き出しています。
このように、Mid関数は「文字列の末尾から〇文字取り出したい」時に使うものになっています。
1-4.FIND関数の使い方
最後にFind関数の使い方です。
Find関数は「指定の文字が調べたい文字列中の左から何番目に位置するかが分かる」関数となっています。
書式は「=FIND(検索文字列,対象,開始位置)」の形となっており、検索文字列の所には「位置を調べたい文字列」を、対象の所には「調べる対象の文字列」を、開始位置の所には「検索を開始する位置」を入力します。
上の例では、Find関数を使ってセルA1の文字列から「都」の位置を調べています。
Find関数は単体で使うことがほとんどなく、先ほど紹介したLeft関数やRight関数、Mid関数と組み合わせて使います。
例えば「県名を抜き出したい」と言った場合には、Left関数とFind関数を組み合わせます。
単純にLeft関数だけ使おうとした場合には、「県」の位置が一定ではないので、抜き出す文字数をその都度手入力しなければなりません。
これに対してLeft関数とFind関数の組み合わせは、Find関数で「県」の位置を検索させることにより、Left関数の文字数を自動で変えることができるのです。
このように、Find関数は「指定の文字列が調べたい文字列によって位置が変わる」時に使うものになっています。
2.文字列抽出応用編!難しい問題をスマートに解決する方法
次に文字列抽出応用編として、3つテクニックを紹介します。
それぞれ覚えておけばきっと役に立つのでしっかりと確認しましょう。
2-1.後ろから検索して抽出するには?
まずは「後ろから検索して抽出する方法」です。
例えば「C:\Program Files\WindowsApps\Microsoft.Office」といった文字列から一番後ろの\以下の「Microsoft.Office」を抜き出したい時にはどうしますか?
まず思い浮かぶのはRingt関数を使うことです。
「Microsoft.Office」という文字列は16文字なので、「=RIGHT(“C:\Program Files\WindowsApps\Microsoft.Office”,16)」とすれば取り出すことはできます。
しかし抜き出したい文字がものによって文字数が変わったらどうでしょうか?
その時には一つ一つ手入力で、文字数を直さなければなりません。
しかし、このような時に「最後の\」の位置を取得できればどうでしょう?
そうすれば文字数を手で直すことなく抜き出すことができるようになります。
セルA1に抜き出し元の文字列があった場合、数式は「=RIGHT(A1,LEN(A1)-FIND("▼",SUBSTITUTE(A1,"\","▼",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))」となります。
この数式は、「抜き出し元の文字列に『▼』という文字が使われていない」という条件が付きますが、セルA1に抜き出し元の文字列が入っている時に「最後の\以後の文字列を抜き出す」ことができます。
数式の細かい動きを説明すると分かりづらくなってしまいますので、大まかに解説しますが、「①SUBTITUTE関数で最後の\を▼に置き換える」、「②FIND関数で▼の位置を探索する」、「③LEN関数で▼以後の文字数を算出する」、「④RIGHT関数で末尾から抜き出す」という動きをしています。
これは覚えておくと便利ですよ。
2-2.数字だけを抽出するには?
次に数字だけを抜き出したい場合です。
例えば「エクセル2013バージョン」という文字列があった時に「2013」だけ抜き出すことができる数式です。
セルA1に抜き出し元の文字列があった場合、数式は「=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW($1:$25),1))*ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10)」で、先頭からみて最初の数値を取り出すことができます。
数式の細かい動きを説明すると分かりづらくなってしまいますので、大まかに解説しますが、「①一文字ごとに数値かどうかを検証」、「②各数値に桁数分10を掛けて合計する」という動きをしています。
これも覚えておくと便利ですよ。
2-3.FIND関数に複数条件を設定するには?
最後にFind関数に複数条件を設定する方法についてです。
例えば住所録があって都道府県名のみを抜き出したい時、Find関数で検索したいのは「『都』、『道』、『府』、『県』のどれか」となります。このor条件でFind関数を使うことができるということです。
セルA1に抜き出し元の文字列があった場合、数式は「=IFERROR(FIND("都",A1),IFERROR(FIND("道",A1),IFERROR(FIND("府",A1),IFERROR(FIND("県",A1),0))))」となります。
これはFind関数で「都」、「道」、「府」、「県」を探し、あればその位置を、なければIFERROR関数で0を返すというものです。
このようにIFERROR関数とFind関数の組み合わせを繋げていけばいくつでも複数条件の指定が可能となります。
ただ一つ注意したいのは「抜き出したい位置が正確にとれているか確認する事」で、例えば「北海道札幌市北区」という住所に「都」という文字が入っていると数式は「都がここにある」と返してきます。
ですから都道府県名以外の所に「都」、「道」、「府」、「県」の漢字が入っていないかを確認するようにしましょう。
3.まとめ
以上エクセルの文字列抽出について、利用する関数4つと応用編としての便利なテクニック3つを紹介しました。
ここで書かれていることを実践すれば、エクセルでの文字列抽出に悩むことはなくなります。
大いに活用して自在に文字列を抽出できるようになりましょう!
コメント