Access文字列分割!苗字と名前に分ける方法

 

アクセス担当のまみです。

 

テーブルを作成する際に氏名の入力方法で悩みませんか?

苗字と名前に分けた構成にするか、分けない構成にするか。

 

どちらを使うかいつも決まっていれば問題ないんですが、両方使う場合があったりして・・・

氏名を分けない構成にしていても、苗字と名前の間に空白があれば、後で分けることも可能です。

 

今回は、苗字と名前に分割する方法をお伝えしますね。

 

文字列を分割する

 

文字列を分割する時によく使うのはLeft,Right,Midの3つの関数です。

 

ラベル名
Left(文字列, 文字数)
Right(文字列, 文字数)
Mid(文字列, 開始位置[,文字数])

 

Left関数・・・左から文字を取り出してくれます。

Right関数・・・右から文字を取り出してくれます。

Mid関数・・・開始位置を指定してそこから文字を取り出してくれます。

 
 

 

(あいちゃん)
今回は、LeftとMidの2つの関数を使用するよ!
でもこれだけじゃ氏名を分割できないんだな。

 

(はてな君)
どうして?

 

(あいちゃん)
苗字も名前もどちらも文字数って決まってないでしょ。

 

(はてな君)
あ~。取り出す文字数がわからないんだ。

 

 

(あいちゃん)
そう。だから空白を条件にしてInStr関数で文字数を数えるんだよ!

 

(はてな君)
そっか。だから苗字と名前の間に空白がないと分割できないんだ。

 

(あいちゃん)
そういうこと!

 

構文
InStr ([start, ] string1, string2 [, compare])

 

InStr関数・・・検索したい文字の位置を数字で教えてくれます。

 

それぞれの関数の詳細は下記の記事をどうぞ!

 

 

 

 

クエリで氏名を分割する

 

使用するテーブル

「T_住所録」

 

テーブルの準備ができたらクエリを作成しましょう。

 

リボンの①「作成」タブから②「クエリデザイン」を選択し、「T_住所録」を追加します。

 

 

フィールドに下記の2つを入力しましょう。

 

苗字: Left([氏名],InStr([氏名],” “)-1)

名前: Mid([氏名],InStr([氏名],” “)+1)

 

(はてな君)
空白まで含まれた数値で返ってくるから足したり引いたり調整してるんだね。

 

 

(あいちゃん)
大正解!
データシートビューに切り替えてみてね!

 

 

(はてな君)
苗字と名前の間に空白があるとちゃんと分割できるんだね。

 

(あいちゃん)
Left関数を使わないでMid関数とInStr関数を使って分割する方法もあるよ。「しめい」を使ってやってみようか。

 

 

(はてな君)
Mid関数を使って苗字を先頭から取り出すようにしたらいいんだよね。

 

フィールドに入力するのは下記の2つです。

 

みょうじ: Mid([しめい],1,InStr([しめい],” “)-1)

なまえ: Mid([しめい],InStr([しめい],” “)+1)

 

(あいちゃん)
はてな君よくできました!
データシートビューに切り替えてみてね!

 

クエリは「Q_氏名分割」と名前をつけておきましょう。

 

まとめ

 

テーブル作成時に氏名って本当に悩みます。

最初から苗字と名前と分けて入力するか、分けないで入力するか。

 

あとで分けられるんだって知っていれば悩まずに済みますね。