膨大なデータも一瞬でスッキリ!「Excel時短テク」の上手な活用を
3)指定した文字列の位置を検索する関数
再び「39128_山田 花子」「01747_田中 正太郎」を例に、今度は氏名をさらに分解して、名字と名前を別々に取得する場合を考えてみましょう。
これなら先ほどのMID関数を使って「=MID(A1,7,2)」とすれば名前を、「=MID(A1,10,20)」と記述すれば問題ないように思えますが、これは名字が2文字でなければ成立しません。たとえば「72934_佐々木 小次郎」のように名字が3文字では名字が「佐々」、名前が「 小次郎」と表示されてしまいます。
でも安心してください。このような問題はFIND関数を組み合わせることで解決できます。FIND関数は指定した文字列が何文字目に登場するかを検索して値を返してくれる関数です。たとえば「39128_山田 花子」の例では“=FIND(”山田”,A1)”と記述すると「山田」という文字列が何文字目に登場するかを探し当てて、「7」という数値を表示してくれます。
これを応用することで、先ほどの例でも名字と名前をそれぞれ個別に取得することができます。
MID関数とFIND関数の合わせ技を使ってみると…
早速、「72934_佐々木 小次郎」を例に考えてみましょう。まずは名字です。MID関数を使って7文字目から取得するのはよいとして、問題は「何文字取得すればよいか」です。そこでFIND関数の出番です。
この例では「=FIND(” ”,A1)」と置くことで「佐々木」と「小次郎」の間にあるスペースの位置できるので(この場合は「10」ですね)、これを利用します。より具体的には、MID関数の中で7文字目から3文字取得できればよいので、「=MID(A1,7,FIND(” ”,A1)-7)」と入力します。すると無事に「佐々木」という文字列を表示させることができました。
また、同じ例で名前を表示させる場合を考えてみます。こちらもやはりMID関数を使うのですが、今度は「何文字目から取得するのか」が問題です。そこで、FIND関数を使って名字と名前を隔てるスペースの位置を探り、その次の位置から名前の文字列を取得します。FIND関数でスペースの位置を取得するための記述は名字の場合と変わりません。
こちらのケースでは「=MID(A1,FIND(” ”,A1)+1,20)」と記述すると「小次郎」という文字列を表示することができます。なお、こちらの場合でも20の値は3でも100でも構いませんが、十分に大きな数字を入れましょう。