Access 2013

氏名フィールドを姓と名に分割して新しいテーブルを作成する方法

投稿日 2017年1月7日   更新日 

テーブルに、姓と名がスペースで区切られた[氏名]フィールドがある場合、クエリを使って[姓]と[名]のフィールドに分割できます。

この記事では、

  1. InStr 関数でスペースの位置を取得
  2. Left 関数と Mid 関数で姓と名を切り出す
  3. 作成したクエリをもとに新しいテーブルを作成する

という流れで解説します。

クエリで姓と名に分ける

テーブルの[氏名]フィールド

サンプルとして、以下のようなテーブル[T_man]を使用します。

[氏名]フィールドの[姓]と[名]の間は、半角スペースと全角のスペースが混在しています。

学習用として、意図的に混在させています。

テーブル[T_man]

参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[重ねて表示]の違いと切り替え方法

Access 2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 以前からAccessを使っている方 ...

クエリの作成

テーブル[T_man]をもとにクエリを作成して、[氏名]フィールドをデザイングリッドへドラッグします。

そして、2列目と3列目のフィールドには以下のように入力します。

今回使用している式は、半角スペース・全角スペースが混在しているデータでも正しく動作します。

姓: Left([氏名],InStr([氏名]," ")-1)

名: Mid([氏名],InStr([氏名]," ")+1)

クエリの作成

参考デザイングリッドのフィールドに入力する時は、ズームウィンドウを使用すると楽に入力できます。

[ズーム]ウィンドウを表示して入力

または、クエリデザインのフォントサイズを大きくする方法もあります。

クエリデザインとデータシートビューのフォントサイズを変更

Accessのクエリデザインとデータシートビューのフォントサイズを変更する方法です。 大きく表示したいと思う方も多いのではないでしょうか?オ ...

クエリのデザインビューで[テーブルの追加]やショートカットメニューから[テーブルの表示]をクリックすると、Microsoft 365のAccessとAccess 2021以降では[テーブルの追加]作業ウィンドウとして表示されます。

クエリデザインの「テーブルの追加」は作業ウィンドウに表示される

InStr関数・Left関数・Mid関数について

3つの関数について少し解説します。

まず、InStr関数を使って空白の位置を求めます。

求めた位置を元にして、Left関数で空白の手前までを取り出したものが[姓]、Mid関数で空白の後ろを取り出せば[名]となります。

文字 位置
1
2
(スペース) 3
4
5

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]を追加します。

クエリのデザイングリッドに[ID]を追加

[デザイン]タブの[クエリの種類]グループにある[テーブルの作成]をクリックします。

クエリの種類:テーブルの作成

クエリを使用してデータベースのレコードを選択し、新しいテーブルとして保存します。

[デザイン]タブの[クエリの種類]グループにある[テーブルの作成]

[テーブルの作成]ダイアログボックスが表示されます。

[テーブル名]のテキストボックスに任意の名前を入力して[OK]ボタンをクリックします。

ここでは、[T_氏名]とします。

[テーブルの作成]ダイアログボックス

[デザイン]タブの[結果]グループにある[実行]ボタンをクリックします。

[デザイン]タブの[結果]グループにある[実行]ボタン

以下のメッセージウィンドウが表示されますので、[はい]をクリックします。

メッセージウィンドウ

ナビゲーションウィンドウにテーブル[T_氏名]が追加されています。

テーブル[T_氏名]

作成したテーブル作成クエリは必要であれば、保存しておくといいと思います。

アクションクエリは、ダブルクリックするだけで実行されますので、気を付けてください。

アクションクエリ

参考アクションクエリ[テーブルの作成]については、以下の記事でも解説しています。

ユニオンクエリ(複数のテーブルを結合)をコピーと貼付で簡単作成

Accessには、複数のテーブルやクエリのレコードを結び付けて、1つのクエリにする[ユニオンクエリ]という機能があります。 ユニオンクエリは ...

グループ化で重複レコードを削除したテーブルを作成

Accessで、1つのテーブルで重複したレコードを削除してマスターテーブルを作成する方法です。 クエリでグループ化を設定して重複レコードがな ...

Excelで姓と名に分ける方法もあります。

テーブル[T_man]をそのままExcelに出力して、Excelで姓と名に分けることもできます。

Excelのワークシートで氏名の列を姓と名に分割するには、区切り位置指定ウィザードを使用すると便利です。

氏名を姓と名に分割できる[区切り位置指定ウィザード]の使い方

Excelで氏名セルを姓と名の別々のセルに分けるという作業をしなければならないことがあります。 以下に2つの表があります。 上の表の[氏名] ...

Excel 2013以降のバージョンでは、フラッシュフィルという機能を利用して分割することもできます。

下記記事内の氏名を姓と名に分割で解説しています。

フラッシュフィル(文字列の結合・分割をワンクリックで自動化)

フラッシュフィルとは、入力されたデータの規則性をExcelが自動的に見つけて処理してくれる機能です。 Excel 2013の新機能です。 こ ...

Excelでも関数を使って、分割できます。

関数を使って氏名を[姓]と[名]に分割してふりがなを表示する方法

Excelで氏名の列を[姓]と[名]の列に分割したい場面はよくありますね。 分割方法はいくつかありますが、この記事では 関数で分割する方法と ...

Excel 2024とMicrosoft 365のExcelでは、新関数[TEXTBEFORE][TEXTAFTER][TEXTSPLIT]を使って、文字列をより簡単に抜き出したり分割することもできます。

文字列の抜き出しや分割が驚くほど簡単になる3つの新関数

Excel 2024とMicrosoft 365のExcelでは、[TEXTBEFORE][TEXTAFTER][TEXTSPLIT]関数が ...

Power Queryで分割することもできます。

Power Queryで1つのセルを複数に分ける[列の分割]の使い方

1つのセルに複数のデータが混在していると、集計や並べ替えができず、データの活用が難しくなります。 いわゆるデータベースとして機能しない状態で ...

AccessからExcelへ出力するコマンドボタンの設定は、以下の記事で解説しています。

Excelに出力(エクスポート)するコマンドボタンの作成

Access 2010でテーブルやクエリをExcelに出力するマクロを作成し、それをコマンドボタンに登録する方法です。 マクロの作成方法は3 ...

  • この記事を書いた人
  • 最新記事

-Access 2013 

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