Excelにおける文字列操作をもう少し覚えてみよう

はじめに

昨日の記事を読んだ上で本記事を読まれることを推奨します(。・ω・)ノ

 

文字の抜き出しをもっと柔軟にできるようにする

さて、昨日の記事で文字を結合したり、右や左から一定数の文字を表示することを覚えました。

本日は左右からではなく、真ん中のあたりからでも文字を抜き取ってこれるような方法を説明していきたいと思います。

例によってA1に対象となる文字を、A3に関数を、B3にはA3に入力している内容を示しています。

MID(A1,a,b)
A1セルのa文字目からb文字分を表示する。

さて、詳しく見ていきましょう。

A1セルには「あいうえおかきくけこさしすせそ」が入力されています。

この真ん中の方の「かきくけこ」の部分だけ表示することをやってみます。

MIDという関数は指定した場所から指定した文字数分を表示することができます。何文字目から何文字分を表示、という表現をします。

表示させたい「かきくけこ」の先頭の「か」はA1セルの6文字目に相当します。そこから5文字分を表示すれば目的が達成できるため、aには6を、bには5を入れればOKですね。

ここまでよろしいでしょうか。

 

次にもう一つ関数を紹介します。

FIND(”か”,A1)
A1セルで「か」という文字を左から探して何文字目で見つかるかを返す

説明の日本語がわかりにくいですが、指定した文字が何文字目にあるかという情報を数字で返してきます。「返してくる」とはつまりその数字が表示されるということです。

つまり、「か」は6文字目にあるので、

こうですね。「か」を「け」に変えれば「9」が返ってくるし、「そ」にすれば「15」が返ってきます。

また、具体的に文字を指定するときは半角ダブルクォーテーションで囲むようにと前回の記事でお伝えしたとおりです。

 

MIDはどういうふうに使われる…?

さて、この2つはどのように活きてくるのでしょうか。

たとえば次のようなものを考えてみます。

A2セルには氏名が入力されており、B2セルにはそのうちの名字を、C2セルには名前を表示させてみます。

もちろんA列にはこの下にもいろんな名前の人が入力されている前提で作業をします。つまり、名字も名前も1文字とは限らず、1文字かもしれない、3文字かもしれない、でもそれら全てに対応できる、そんな関数の入力を考えます。

ここで重要になるのが、氏名は名字と名前の間に「全角スペース」が入力されているところになります。これを使いますが…どうしたらよいでしょうか。

名字部分の表現方法を考えてみよう

はい、FIND関数で全角スペースの位置を探り、その前が名字、その後ろが名前、と判断して表示させます。

FINDで全角スペースを探すのは

=FIND(“ ”,A2)

でいいですね。この場合この関数で帰ってくるのは「3」でしょう。名字が2文字なので、スペースは3文字目に存在していますよね。

この「3」を使って名字はどう表せるでしょうか?

名字は当然1文字目から始まり、スペースの前の2文字目まで、ですよね。2文字目というのは「3マイナス1」で表すことができます。

つまり、MIDの「〇文字分表示する」の部分に

FIND(” ”,A2)-1

を入れてやればいいのです。

よって、名字部分は

=MID(A2,1,FIND(“ ”,A2)-1)

このように表現できます。

(A2セルの1文字目から、『FIND(” ”,A2)-1』文字(=2文字)表示する の意味になる)

 

名前部分の表現方法を考えてみよう

さて次は名前をどう表したらよいのかを考えてみましょう。

やっぱり全角スペースの位置が大切になりますよね。だって名前はスペースの位置の次、つまり+1した位置から始まるんですから。

あとMID関数に必要な情報は「何文字分表示させるか」です。ちなみにここの部分は大きめの数にしておけば、「スタートとして指定した位置から残り全部」を表示させることが可能です。すなわち、

=MID(A2,FIND(“ ”,A2)+1,100)

こんな感じでもOKです。ちょっと100は極端すぎますがw

(A2セルの『FIND(” ”,A2)+1』文字目(=3文字目)から、100文字(、足りない場合は全部)分を表示する の意味になる)

 

おわりに

さて、今回はMIDとFINDを使って、文字列の途中からでも必要なだけの文字数分を表示させるという操作ができるように説明してきました。

お気づきの方もおられると思いますが、今回の操作で名字を抜き取る部分は「LEFT」関数を使ってももちろん問題ありません。だって1文字目から表示させるんですからね。MIDで1文字目から、と指定する場合と何ら変わりありません。

MIDの中にFINDを入れ込む構造になるので、慣れない方には少し難しく感じる内容だったかもしれませんが、このように関数の中に関数を入れる書き方(入れ子構造 といいます)は今後どんどん出てくるので早めに苦手意識をなくしておけるといいですね。

それではまた次回。