パソコンスキルの教科書

パソコンスキルの教科書

東京大学大学院卒。博士課程に進学を志すも、担当教授と折が合わず、無職になる。医者を目指すも結局断念。田舎で派遣社員として働く。「スキルがなければ、仕事ももらえない」と悟り、ビジネススキルを学ぶ。プログラミング、英語を学び、一部上場企業へ転職。年間100時間以上の業務効率化を行い、社内講師に抜擢。海外の案件を担当し、数億円のプロジェクトに携わる。個人の事業でも、月売上100万を達成。現在は、自分の価値を高めるためのスキル向上支援を行う

エクセル関数(Find関数)で姓名を区切り文字列分割する方法|Left関数,Mid関数を組み合わせる

f:id:gene320:20180920224736j:plain

エクセル関数を使って、以下のように「1つのセルに入力されている情報を項目ごとに分けたい」と考えるときがあります。

f:id:gene320:20180920224932p:plain

数行であれば、手入力でやっても問題ありません。

しかし、以下のように処理する情報量が多い場合、手入力で行うことは現実的ではありません

f:id:gene320:20180920225020p:plain

このようなケースが業務の中では決して珍しいものではありません。

そのため、多くの人はExcel(エクセル)関数を使って、業務の自動化を考えます。

しかし、エクセル関数を使いたいと考えていても、エクセル関数の知識不足のせいで十分に活用することができない人は少なくありません。

そこで実際の業務で見かける事例をもとに、文字列の分割をエクセル関数で行う方法を紹介します。

特にLeft関数、Mid関数、Find関数をうまく組み合わせる方法について紹介していきます

この記事で紹介する3つの関数を使いこなすことで、仕事を自動で効率的に対処可能になります。

この記事で学べること

この記事で学べることは、苗字(姓)と名前(名)が入力されているセルから、姓と名を分けて取り出します。

このとき、以下の2つの条件を想定しているケースで紹介します。

条件1|B列に記載されている名前を姓名に区切り、C列に姓、D列に名を入れる
条件2|B列に記載されている姓名は、姓と名の間に区切り文字"/"を入れてある

図で表すと以下です。

ビフォー| B列に書かれている名前を

f:id:gene320:20180920225454p:plain

アフター| C列、D列に分割して取り出します

f:id:gene320:20180920225459p:plain

今回のケースでは区切り文字を"/"としていますが、空白で区切られている場合もあります。

ただ、本記事で紹介するエクセル関数の使い方を理解できれば、"/"であっても空白であっても処理が可能になります

さて、今回の名前を姓名で区切る方法では、以下の3つのエクセル関数を組み合わせて使います。

関数1|Left関数
関数2|Mid関数
関数3|Find関数

しかし、いきなり組み合わせて説明するとレベルが高いです。

そこで、まずは使用する3つのエクセル関数をそれぞれ説明します。

Left関数|文字列を左から好きなところまで抜き出す

Left関数とは、指定した文字列の左側(文字列の先頭)から、任意の文字数分を抜き出す為の関数です。

つまり、文字の先頭から好きな文字数分を抜き出すことが出来ます。

関数の構文は、 Left(文字列、抜き出したい文字の数)です。

=Left(文字列、抜き出したい文字の数)
例1|=Left(“あいうえお”, 1) であれば「あ」と出力
例2|=Left(“あいうえお”, 3) であれば「あいう」と出力
例3|=Left(“あいうえお”, 5) であれば「あいうえお」と出力

それでは、この関数を使用して、名前から"姓"のみを抜き出す方法を見ていきましょう。

B列に名前、C列に区切り文字"/"の位置が入力されているとします。

Left(文字列、文字数)のうち、文字列に : B列(名前) 、文字数に : C列(区切り位置) - 1 を指定します。

f:id:gene320:20180920225925p:plain

すると、以下のように文字列から"姓"のみを抜き出した結果が得られます。

f:id:gene320:20180920230009p:plain

なぜ-1を入れるのか?

ここでは、Left(B2, C2-1)と記載しました。ところで、なぜLeft(B2, C2-1)とし、-1を記載するのでしょうか。

これを説明するためには、実際に-1を入れない場合を見てみると分かりやすいです。

-1を入れないと以下のようになります。

f:id:gene320:20180920230217p:plain

つまり先頭を1と数えてしまい、区切り文字である「/」まで抜き出してしまうのです。

そのため、left関数を使って姓名を区切る場合は、-1を入れる必要があることがあります。

Mid関数|好きな位置から、好きな文字数分を抜き出す

Mid関数は、前述のLeft関数と似た機能を持ち、ある文字列から好きな文字数だけ抜き出す関数です。

しかしMid関数とLeft関数で異なる点があります。それは、以下です。

Left関数|文字抜き出しの開始位置が文字列の一番左側(先頭)
Mid関数|文字抜き出しの開始位置を自由に指定可能

つまり、Mid関数は好きな位置から、好きな文字数分を抜き出すことが出来るのです。

以下はMid関数の事例です。

=Mid(文字列、開始位置、抜き出したい文字の数)
例1|=Mid(“あいうえお”, 2,1)であれば「い」
例2|=Mid(“あいうえお”, 3,2)であれば「うえ」
例3|=Mid(“あいうえお”, 1,5)であれば「あいうえお」

それでは、実例を使って姓名から"名"のみを抜き出す方法を見ていきましょう。

以下のようにE列にMid関数を使ってB列姓名の名だけを抜き出します。

f:id:gene320:20180920230725p:plain

このとき、E列に、=Mid(B2, C2+1,1)と入れています。

これは、以下のような意味になります。

=Mid(B2, C2+1, 1)

このとき、セルB2とセルC2は以下の値です。
セルB2の値|”大分/健”
セルC2の値|3

したがって
=Mid("大分/健", 3+1, 1)
=Mid("大分/健", 4, 1)
=健(出力される値)

結果は以下の通り、"名"のみを抜き出した結果が得られます。

f:id:gene320:20180920231237p:plain

Mid関数で抜き出す文字数を多くしたらどうなるか?

ところで、Mid(文字列、開始位置抜き出し位置、抜き出したい文字の数)のうち、「抜き出したい文字の数」を 大きな値にしたらどうなるでしょうか

f:id:gene320:20180920231954p:plain

=Mid(B2, C2+1, 100)
=Mid("大分/健", 3+1, 100)
=Mid("大分/健", 4, 100)
=(出力される値)

「大分/健」の文字数は4です。

そのため、文字数4の「大分/健」の4番目であり文字列の末文字「健」から100文字分抜き出すことになります。

つまり、実際には1文字分しか存在しないところに、100文字抜き出すことになります。

すると、どうなるでしょうか。指定した結果は以下です。

f:id:gene320:20180920232043p:plain

1文字抜き出した場合と同様の結果が得られます。

このことは、存在する文字数より大きい値を指定した場合、その文字列の最後まで抜き出されることを意味しています

つまり、文字列の長さに関わらず最後まで抜き出したいときは、文字数を明らかに上回る数を指定しておくといいでしょう。

Find関数は指定した文字列が何番目にあるかを見つける

姓名を姓と名で区切るとき、姓と名を区切る位置を自動判別する必要があります。

なぜなら、姓が2文字の人もいれば3文字の人もいるからです。

例えば、姓が2文字で固定してしまうと、姓が1文字の人や3文字の人に対応できません

そのため、Mid(文字列、開始位置、抜き出したい文字の数)の「開始位置」が自動で増減させるような工夫が必要です。

ちなみに上記でMid関数の説明をしたときは、姓名を姓と名で区切るためにC列に区切り位置を事前に入力していました。

f:id:gene320:20180920232319p:plain

C列は、B列の名前のうち"/"の文字位置が何番目に来るかをあらかじめ記載しておいたのです。

しかし現実の業務では、区切り位置が事前に入力されていることはほとんどありません。

そのため、もし区切り文字の位置を手入力していたら、時間と手間がかかりエクセル関数を使う意味がありません。

さらにケアレスミスが発生する可能性が非常に高くなります。

それでは、B列の名前から区切り文字である”/”を自動で見つけるためにはどうすればいいのでしょうか。

それはFind関数です。Find関数を使い自動で区切り文字の位置を判別してくれるようにするのです。

Find関数の使い方

関数の構文は Find("検索文字列", "対象")となります。

例えば、文字列"あいうえお"から、"う"の位置を探してみます。

=Find("う", "あいうえお")
=3出力される値)

f:id:gene320:20180922205129p:plain

"あいうえお"の先頭文字「あ」を1として数えるので、「う」の位置は3となります。

f:id:gene320:20180922205135p:plain

他にも、セルB1からセルC1に記載された文字の位置を探すことできます。

f:id:gene320:20180922205154p:plain

セル"C1"に入力されている"/"は、3文字目と6文字目の2回出てきますが、1つ目の位置が表示されます。

f:id:gene320:20180922205211p:plain

2つ目以降については、以下の方法で取得することが可能です。

=Find(C1,B1,4)
=6出力される値)

4というのはFind関数を使って探し始める位置を示しています。

このとき、セルB1の文字列である「YY/MM/DD」で最初の「/」が出てくるのが3文字目です。

そのため、4文字目以降を設定すれば、「YY/MM/DD」の「/」の位置である「6」を示すことになります。

ここまで紹介してきたLeft関数、Mid関数とFind関数を組み合わせることで大量の情報を効率的に区切ることが出来ます。

エクセル関数で姓名の区切りを見つけて苗字と名前に分割するときの手順

今まで学んできた Left , Mid , Findの3つの関数を用いて、実際に姓名を分割する手順をみていきます。

具体的には、以下のビフォーの状態からアフターの状態にするのを目指します。

ビフォー

f:id:gene320:20180920232757p:plain

アフター

f:id:gene320:20180920232804p:plain

実際の手順は以下の4ステップです。

ステップ1|Find関数で区切りを見つける
ステップ2|Left関数で区切りを見つけ姓を分割する
ステップ3|Mid関数で区切りを見つけ名を分割する
ステップ4|フィルダウンで全てのセルに関数を入れる

それでは、順番に解説していきます。

ステップ1|Find関数で区切りを見つける

最初のステップは、Find関数で姓と名の区切り文字"/"の位置を見つけることです。

=Find(検索文字, 検索対象)で使用し、
検索文字|"/"
検索対象|B列

として、区切り文字である”/”が、B列の文字の中で何番目に出てくるかを見つけます。

以下が入力した画面です。

f:id:gene320:20180920233021p:plain

結果は以下の画面になります。区切り文字の位置が正しく表示されたことがわかると思います。

f:id:gene320:20180920233032p:plain

これで、姓名の区切り位置をFind関数で取得することが可能になりました。

ステップ2|Left関数で区切りを見つけ姓を分割する

今まで紹介していた例では、区切り文字の位置を記入するためのC列を用意していました。

しかし、区切り文字の位置を示す列を用意することは、1列余計に使用することになります。

そのため、余計な列があることで結果が見えづらくなってしまいます。

そこで、Left関数の中でFind関数を使用することで、C列なしで"姓"のみを取り出します。

=Left(文字列,文字数)に対して以下のようにします
=Left(B2,Find("/",B2)-1)"

上記の式の様に関数を入れ子にして記述します。

f:id:gene320:20180920233435p:plain

結果は以下の画面です。

f:id:gene320:20180920233444p:plain

C列に入力した関数だけで、"姓"を取り出すことが可能になりました。

関数の中にさらに関数を記述することは、経験がない方だと抵抗があるかもしれません。

しかしExcel関数では非常によく使う方法です。ここで使い方を習得することをお勧めします。

ステップ3|Mid関数で区切りを見つけ名を分割する

Min関数も同様に、Find関数を内部に記述します。

=Mid(文字列, 開始位置, 文字数)のうち開始位置にFind関数を使用します
=Mid(B2,Find("/",B2)+1, 100)

上記の式の様に関数を入れ子にして記述します。

f:id:gene320:20180920233751p:plain

結果は以下の画面です。

f:id:gene320:20180920233817p:plain

ステップ4|フィルダウンで全てのセルに関数を入れる

B列の名前欄の全てに処理が行われるように、フィルダウンを行います。

フィルダウンとは、選択しているセルを同じ操作(ここでは関数)を他のセルにも反映させることです。

ここでは、フィルダウン操作を行いコピーしていきましょう。

フィルダウンのためには、選択範囲の右下をドラッグ(マウスの左ボタンを押しっぱなしにする)します。

具体的には以下です。

[1] C列のLeft関数とD列のMid関数の2つを選択します。

f:id:gene320:20180920233817p:plain

[2] 選択範囲の右下の■をマウス(左ボタン)を押したままにします。

f:id:gene320:20180922205723p:plain

[3] マウス(左ボタン)を押したまま、下方向にマウスを動かします。(これを「ドラッグする」といいます)

f:id:gene320:20180922205732p:plain

f:id:gene320:20180922210203p:plain

[4] 全てのデータ範囲を選択したら、マウス(左ボタン)を離します。

f:id:gene320:20180922210355p:plain

これで関数コピーの完了です。

入力された名前がすべて変換されます。

今回は行2~行4のデータのみですが、1000行を超えるデータでも同様にフィルダウン処理を行えば一発で処理が終わります。

本記事で紹介したエクセル関数はこちらの無料動画で完全版を学べます

ここで紹介した内容は完全版を無料動画講座としてこちらに登録して閲覧可能です。

完全版(無料動画)には、以下の3つのメリットがあります。

メリット1|テキストだけではわかりづらいパソコン操作が分かる
メリット2|紹介したエクセルファイルをダウンロードできる
メリット3|ほかの人の質問や感想を閲覧したり投稿したりできる

一つずつ説明していきます。

メリット1|テキストだけではわかりづらいパソコン操作が分かる

テキストや画像だけでは、パソコン操作が分からないことがあります。

例えばフィルダウンと記載されても、何を指しているのかわからない場合があります。

しかし動画講座であれば、テキストでは分かりづらい内容でも動画で細かく説明してくれます。

そのため、エクセル関数の初心者でも理解のスピードが上がります。

メリット2|紹介したエクセルファイルをダウンロードできる

練習用エクセルファイルをダウンロード可能です。

ここで記載してある内容をわざわざ自分で準備する必要がなく、その分を練習時間に充てることができる

メリット3|ほかの人の質問や感想を閲覧したり投稿したりできる

自分でテキストを理解しようとするとき、必ず質問したいことが出てきます。

特にこれからエクセル関数を学ぼうと考えている人には、分からないことがたくさん出てくるはずです。

そこで、ほかの人の質問や投稿を見ることで、自分が躓いているポイントを解決することも可能です。例えるなら、ヤフー知恵袋のようなものです。

このように、自分が分からなかったことを他の人がすでに聞いていて回答をもらっている場合は少なくありません。

完全版には、ほかの人が学習する過程で発生した質問や感想が数多く投稿されています。

それらを読むことで、自分が抱えている問題を自分で解決できるのです。

まとめると完全版には、以下の3つのメリットがあります。

メリット1|テキストだけではわかりづらいパソコン操作が分かる
メリット2|紹介したエクセルファイルをダウンロードできる
メリット3|ほかの人の質問や感想を閲覧したり投稿したりできる

ぜひ、ここで紹介した内容の完全版をこちらの無料動画講座として勉強してみることをお勧めします。

エクセル関数の上位互換であるエクセルマクロはもっと便利

ここまでleft関数、Mid関数、Find関数を使って名前を分割する方法を紹介してきました。

これを使えば、大量のデータを処理する必要があっても一発で処理することができます。

このように、エクセル関数を使えばこれまで面倒だった作業でも簡単に終わらせることができるのです。

しかし、エクセル関数よりさらに便利なスキルがあります。それはエクセルマクロです。

エクセルマクロとはエクセル仕事を自動化するスキルです。

例えば、エクセルマクロを使えば、以下のように請求書を自動で作成することも可能です。


他にもさまざまなことに応用可能です。詳しいことは以下の記事で紹介しています。

www.fastclassinfo.com

エクセルマクロを学べば仕事を仕組み化し、業務を大幅に効率化できることも少なくありません。

なおエクセルマクロがなぜエクセル関数より便利なのかは以下の記事で解説しています。

www.fastclassinfo.com

私自身、エクセルマクロを活用して数時間の業務が自動処理するようにした経験があります。

エクセルマクロについては、こちらの初心者用の無料動画でわかりやすく学ぶことができます。

ぜひ、この機会にエクセルマクロを学んでみてほしいと思います。