まずは、姓と名の間にスペースが入った名前のセルを、姓と名に分割する方法だ。Excelには、「カンマやタブ、スペースなどの区切り文字を利用してセルを分割する」という機能がある。これを利用するわけだ。
前回の結合のときにも利用した「フラッシュフィル」機能で、分割も可能だ。まずは1行目の姓を手入力する。その後、「データ」タブの「フラッシュフィル」を実行すると、姓だけが抽出されて一瞬で自動入力される。「名」も同様にすればよい。
[caption id="attachment_23243" align="aligncenter" width="620"]
先頭の行は手入力で入力し、「データ」タブの「フラッシュフィル」を実行[/caption]
[caption id="attachment_23244" align="aligncenter" width="620"]
すると、一瞬ですべての姓が自動入力される[/caption]
ただし、前回も少し解説したが、フラッシュフィルは万能ではない。もし姓と名の間にスペースがない場合、3行目の「武翔太郎」は「武翔」が姓と判断されてしまう。フラッシュフィルは、規則性を認識して自動入力してくれる機能だが、ここでは「先頭の2文字を取り出す」という規則性を認識してしまっているので、間違いが起こっているわけだ。
[caption id="attachment_23245" align="aligncenter" width="620"]
規則性を誤認識し、正確に分割できない[/caption]
関数を使って区名を取り出す
「港区高輪…」
「品川区北品川…」
「千代田区神田…」
これらのデータから、区名だけ取り出すにはどうすればよいだろうか。文字数は異なるしスペースも入っていない。
フラッシュフィルを試してみたが、うまくいかない。
[caption id="attachment_23246" align="aligncenter" width="620"]
文字数の違う3パターンを入力して試してみるも、「パターンが見つかりませんでした」という画面が出てしまった[/caption]
こんなときは関数を使おう。指定した文字列が何文字目かを調べる「FIND」関数と、左から○文字を取り出す「LEFT」関数を組み合わせて使う。
まずは、「区」が何文字目かを調べるには「=FIND("区",A3)」という式を立てる。「区」は「"」(ダブルクォーテーション)で囲む。さらにLEFT関数を組み合わせて「=LEFT(A3,FIND("区",A3))」とすると、「区が先頭から何文字目かを調べ、A3セルに入力されている文字の左からその文字数分だけ取り出す」というルールを適用することができる。
==========================
FIND関数-指定した文字が何文字目かを調べる
=FIND(検索文字列,対象,開始位置)
==========================
==========================
LEFT関数-「左から○文字」を取り出す
=LEFT(文字列,文字数)
==========================
[caption id="attachment_23247" align="aligncenter" width="600"]
FIND関数とLEFT関数を組み合わせ、「区が先頭から何文字目かを調べ、左からその文字数分だけ取り出す」というルールの式を立てる[/caption]
[caption id="attachment_23248" align="aligncenter" width="600"]
右下の■(フィルハンドル)を下までドラッグすると、区名が取り出せる[/caption]
“4文字なのは県だけ”を利用して都道府県を取り出す
では次は住所から都道府県だけを取り出してみよう。都道府県の場合は4種類あるので、区のように文字を特定できない。さらに、文字数も3文字と4文字が存在する。しかし、4文字なのは「神奈川県」「和歌山県」「鹿児島県」の3県のみ。これをうまく利用しよう。
「4文字目が「県」の場合は先頭から4文字を取り出し、そうでなければ3文字を取り出す」という式を立てればよい。「○○の場合はAの処理を、そうでない場合はBの処理を」というように、条件に応じて処理を切り替える「IF」関数を使おう。また、「4文字目が「県」かどうか」を調べるには「MID」関数(指定した位置から文字を取り出す)を使う。
==========================
MID関数-指定した位置から文字を取り出す
=MID(文字列,開始位置,文字数)
==========================
==========================
IF関数-条件に応じて処理を切り替える
=IF(論理式,真の場合,偽の場合)
==========================
[caption id="attachment_23249" align="aligncenter" width="620"]
「=IF(MID(B3,4,1)="県",LEFT(B3,4),LEFT(B3,3))」と入力すると「東京都」が取り出せた[/caption]
[caption id="attachment_23250" align="aligncenter" width="620"]
右下の■(フィルハンドル)を下までドラッグすると、4文字の県も、北海道や京都府といったものも正確に取り出せる[/caption]
すべての関数を覚えようと思うと大変だ。よく使う関数だけを覚えるか、それも難しいようであれば、こういった決まったパターンのものはテンプレートを保存しておくなどしてコピーして利用してもよいだろう。その際、セル位置が異なる場合はセル番号を修正しよう。
※第10回は10月1日(月)公開
【ダウンロード】
「時短エクセル」セルの文字列を自在に分割するワザ のお試しファイルのダウンロードはこちらから(Excelファイル)