Windows8 & Office2013 Access2013

氏名を姓と名のフィールドに分ける

投稿日:

Accessでしっかりテーブル設計をしていればいいのですが、なかなかそうはいかず、後からいろいろ注文を受けることになります。

氏名フィールドがあって姓と名が全角スペースで分けられています。
これをExcelで出力した時に姓と名を別々のセルに表示して出力出来ないかとのこと。
テーブルをそのまま出力して、Excelで姓と名に分ける方法で対処したのですが、Accessのクエリでも関数を使ってできますね。

下のようなテーブルがあります。姓と名の間は、半角もしくは全角のスペースです。
サンプルのため、わざと半角スペース、全角スペースとしています。
テーブル
クエリを作成して、フィールドに下のように入力します。
姓: Left([氏名],InStr([氏名]," ")-1)
名: Mid([氏名],InStr([氏名]," ")+1)

InStr関数とは、ある文字列の中から指定された文字列を検索して、最初に見つかった文字位置(文字数)を返す関数です。
Left関数は、文字列の左端から指定した文字数分の文字列を返します。空白スペースは不要なので-1ですね。
Mid関数は、文字列の開始位置から指定した文字数分の文字列を返します。
文字数を省略した場合は、開始位置以降全てを取り出します。開始位置より1つ右からなので+1ですね。
クエリ
実行すると、姓フィード、名フィールドに分けられています。
クエリの実行

スポンサーリンク

やっぱり、ボタン1つで目的のExcelファイルが出力できたほうが便利ですね。
InStr関数は便利な関数ですが、Excelのワークシート関数にはありません。
Excelのワークシートで氏名の列を姓と名に分割するには、区切り位置ウィザードを使用すると便利です。
氏名の列を姓と名の列に分割で解説しています。

トラブルをすぐに解決したいならteratail

お勧め記事と広告

関連記事

表の行の高さを詰めたい

Wordで表を作成後、表の行の高さを調整して文書の体裁を整えたいということがあります。 でも、行の高さを縮めたいけど、思うように調整できない ...

個人情報のチェックはドキュメント検査で

Office2013にも、非表示のデータや個人情報などを自動的にチェックして削除してくれる機能があります。 [ファイル]タブをクリックして、 ...

差分を追加

Accessで2つのテーブルの不一致レコードを抽出した後、その差分レコードをテーブルへ追加する方法です。 下のような[テーブルA]と[テーブ ...

コンボボックスの作成

Word2013でのコンボボックスの作成方法です。 [開発]タブの[コントロール]グループにある[コンボボックス コンテンツ コントロール] ...

コンボボックスの2列目の値を取得

Access2013のフォームでコンボボックスの2列目の値を取得する方法です。他のバージョンでも同じです。 商品テーブルは下のように[ID] ...

-Windows8 & Office2013 Access2013

Copyright © 2001-2017 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2017 AllRights Reserved Powered by AFFINGER4.