1つのテーブルに姓と名が[スペース]で分けられている[氏名]フィールドがあります。
これをクエリで[姓]と[名]のフィールドに分ける方法を紹介します。
InStr関数を使って、文字列の中から空白スペースを検索して、Left関数とMid関数で求めます。
また、作成したクエリをもとに、新規テーブルを作成するまでを解説します。
テーブルの確認
下のようなテーブル[T_man]があります。
[氏名]フィールドの[姓]と[名]の間は、半角もしくは全角のスペースです。
サンプルのため、わざと[半角スペース]、[全角スペース]としています。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
クエリの作成
テーブル[T_man]をもとにクエリを作成して、[氏名]フィールドをデザイングリッドへドラッグします。
そして、2列目、3列目のフィールドには以下のように入力します。
姓: Left([氏名],InStr([氏名]," ")-1)
名: Mid([氏名],InStr([氏名]," ")+1)
参考デザイングリッドのフィールドに入力する時は、ズームウィンドウを使用すると楽に入力できます。
または、クエリデザインのフォントサイズを大きくする方法もあります。
-
クエリデザインとデータシートビューのフォントサイズを変更
Accessのクエリデザインとデータシートビューのフォントサイズを変更する方法です。 大きく表示したいと思う方も多いのではないでしょうか?オ ...
InStr関数・Left関数・Mid関数について
3つの関数について少し解説します。
InStr関数
InStr関数とは、ある文字列の中から指定された文字列を検索して、最初に見つかった文字位置(文字数)を返す関数です。
インエスティーアール、インストリングと読むようです。
InStr(開始位置, 文字列, 検索文字列, 比較モード)
[開始位置]と[比較モード]は省略可
InStr 関数 - Microsoft サポート(Microsoft)
Left関数
Left関数は、文字列の左端から指定した文字数分の文字列を返します。
Left(文字列, 文字数)
空白スペースは不要なので-1ですね。
Left 関数 - Microsoft サポート(Microsoft)
Mid関数
Mid関数は、文字列の開始位置から指定した文字数分の文字列を返します。
Mid(文字列, 開始位置, 文字数)
[文字数]は省略可(文字数を省略した場合は、開始位置以降全てを取り出します)
開始位置より1つ右からなので+1ですね。
Mid 関数 - Microsoft サポート(Microsoft)
参考InStr関数は便利な関数ですが、Excelのワークシート関数にはありません。VBAでは使用します。
クエリの実行
作成したクエリを実行すると、[姓]フィールド、[名]フィールドに分けられています。
デザインビューで[氏名]フィールドの[表示]をオフにすると、
データシートビューは、以下のようになります。
参考分割ではなく、文字列をつなげたい場合は、フィールドを[&]で結合します。
作成したクエリからテーブルを作成
アクションクエリでテーブルを作成するのもいいと思います。
テーブルを作成するには、[ID]フィールドもあったほうがいいと思いますので、デザイングリッドに[ID]を追加します。
[デザイン]タブの[クエリの種類]グループにある[テーブルの作成]をクリックします。
クエリの種類:テーブルの作成
クエリを使用してデータベースのレコードを選択し、新しいテーブルとして保存します。
[テーブルの作成]ダイアログボックスが表示されます。
[テーブル名]のテキストボックスに任意の名前を入力して[OK]ボタンをクリックします。
ここでは、[T_氏名]とします。
[デザイン]タブの[結果]グループにある[実行]ボタンをクリックします。
以下のメッセージウィンドウが表示されますので、[はい]をクリックします。
ナビゲーションウィンドウにテーブル[T_氏名]が追加されています。
作成したテーブル作成クエリは必要であれば、保存しておくといいと思います。
アクションクエリは、ダブルクリックするだけで実行されますので、気を付けてください。
参考アクションクエリ[テーブルの作成]については、以下の記事でも解説しています。
-
ユニオンクエリ(複数のテーブルを結合)をコピーと貼付で簡単作成
Accessには、複数のテーブルやクエリのレコードを結び付けて、1つのクエリにする[ユニオンクエリ]という機能があります。 ユニオンクエリは ...
-
グループ化で重複レコードを削除したテーブルを作成
Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...
Excelで姓と名に分ける方法もあります。
テーブル[T_man]をそのままExcelに出力して、Excelで姓と名に分けることもできます。
Excelのワークシートで氏名の列を姓と名に分割するには、区切り位置指定ウィザードを使用すると便利です。
-
氏名の列を姓と名の列に分割するなら[区切り位置指定ウィザード]
Excelで氏名セルを姓と名の別々のセルに分けるという作業をしなければならないことがあります。 F列の氏名は、空白スペースで区切られています ...
Excel2013以降のバージョンでは、フラッシュフィルという機能を利用して分割することもできます。
-
フラッシュフィル(文字列の結合や抜き出しをワンクリックで)
フラッシュフィルとは、Excelが入力されたデータから規則性を自動的に認識して実行してくれる機能です。Excel2013の新機能です。 これ ...
上記記事内の氏名を姓と名に分割で解説しています。
AccessからExcelへ出力するコマンドボタンの設定は、以下の記事で解説しています。
-
Excelへ出力(エクスポート)するコマンドボタンの作成
Access2010でテーブルやクエリをExcelへ出力するマクロを作成して、それをコマンドボタンに登録する方法です。 独立マクロを作成して ...