Accessでしっかりテーブル設計をしていればいいのですが、なかなかそうはいかず、後からいろいろ注文を受けることになります。
テーブルには、[氏名]フィールドがあって[姓]と[名]が[全角スペース]で分けられています。
これをExcelで出力した時に姓と名を別々のセルに表示して出力できないかとのことでした。
Excelへ出力してExcelで姓と名に分ける
テーブルをそのままExcelに出力して、Excelで姓と名に分ける方法で対処しました。
-
氏名の列を姓と名の列に分割
Excel2013で氏名セルを姓と名の別々のセルに分ける操作をしていたら、Excel2013のポップヒントに思わずほっこりしました。 下のよ ...
-
フラッシュフィル(文字列の結合や抜き出しをワンクリックで)
フラッシュフィルとは、Excelが入力されたデータから規則性を自動的に認識して実行してくれる機能です。Excel2013の新機能です。 これ ...
ですが、Accessのクエリでも関数を使ってできますね。
テーブルの確認
下のようなテーブルがあります。
[姓]と[名]の間は、半角もしくは全角のスペースです。
サンプルのため、わざと[半角スペース]、[全角スペース]としています。
クエリの作成
クエリを作成して、フィールドに下のように入力します。
姓: Left([氏名],InStr([氏名]," ")-1)
名: Mid([氏名],InStr([氏名]," ")+1)
InStr関数とは、ある文字列の中から指定された文字列を検索して、最初に見つかった文字位置(文字数)を返す関数です。
Left関数は、文字列の左端から指定した文字数分の文字列を返します。
空白スペースは不要なので-1ですね。
Mid関数は、文字列の開始位置から指定した文字数分の文字列を返します。
文字数を省略した場合は、開始位置以降全てを取り出します。
開始位置より1つ右からなので+1ですね。
クエリの実行
実行すると、姓フィード、名フィールドに分けられています。
やはり、ボタン1つで目的のExcelファイルが出力できたほうが便利ですね。
InStr関数は便利な関数ですが、Excelのワークシート関数にはありません。
関連Excelのワークシートで氏名の列を姓と名に分割するには、区切り位置ウィザードを使用すると便利です。
氏名の列を姓と名の列に分割で解説しています。
-
氏名の列を姓と名の列に分割
Excel2013で氏名セルを姓と名の別々のセルに分ける操作をしていたら、Excel2013のポップヒントに思わずほっこりしました。 下のよ ...
Excel2013以降のバージョンでは、フラッシュフィルという機能を利用して分割することもできます。
-
フラッシュフィル(文字列の結合や抜き出しをワンクリックで)
フラッシュフィルとは、Excelが入力されたデータから規則性を自動的に認識して実行してくれる機能です。Excel2013の新機能です。 これ ...
上記記事内の氏名を姓と名に分割で解説しています。
AccessからExcelへ出力するコマンドボタンの設定は、以下の記事で解説しています。
-
Excelへ出力(エクスポート)するコマンドボタンの作成
Access2010でテーブルやクエリをExcelへ出力するマクロを作成して、それをコマンドボタンに登録する方法です。 マクロの作成は3つの ...