ファイルメーカー「氏名の姓と名を分離」
ファイルメーカーで「氏名」フィールどの姓と名を分割させる。
フィールド「氏名」「姓」「名」
フィールド「氏名」には名前が入力されていて、なおかつ姓と名の間に、半角スペースもしくは全角スペースがあること。
姓フィールドの置き換え式【氏名】はフィールド名、【" "】が半額スペース、【" "】が全角スペースになる。
Left ( 【氏名】 ; Position ( Substitute ( 【氏名】 ; [" " ; " "];[" ";" "] ) ; " " ; 1 ; 1 ) -1 )
名フィールドの置き換え式
Right ( 【氏名】 ; Length ( Substitute ( 【氏名】 ; [ " " ; " "] ; [ " " ; " "] ) ) - Position ( Substitute ( 【氏名】 ; [ " " ; " "] ; [ " " ; " "] ) ; " " ; 1 ; PatternCount ( Substitute ( 【氏名】 ; [ " " ; " "] ; [ " " ; " "] ) ; " " ) ))
氏名の姓と名の間のスペースが半角、または全角だけの場合は、
姓フィールド
Left ( 【氏名】 ; Position ( 【氏名】 ; " " ; 1 ; 1 ) - 1)
名フィールド
Right ( 【氏名】 ; Length ( 【氏名】 ) - Position ( 【氏名】 ; " " ; 1 ; PatternCount ( 【氏名】 ; " " ) ) )
となる。
使った関数は、
Left
テキストの左から指定した文字数分のテキストを返します。構文
Left (テキスト ; 文字数)
引数
テキスト - 任意のテキスト式またはテキストフィールド文字数 - 任意の数値式、または数値を含むフィールド
戻り値のデータタイプ
テキスト
Position
テキスト内で検索テキストを検索し、指定された回数目の先頭文字位置を返します。構文
Position (テキスト ; 検索テキスト ; 先頭文字位置 ; 回数)
引数
テキスト - 任意のテキスト式またはテキストフィールド検索テキスト - 任意のテキスト式、または検索する文字の集合を表すテキストフィールド
先頭文字位置 - テキスト文字列の先頭から検索開始位置までの文字数を示す数値式または数値を含むフィールド。開始値が 1 以下の場合、検索はテキスト文字列の最初の文字から開始します。
回数 - 検索するテキスト文字列の何回目の文字列を対象とするかを表す数値式または数値を含むフィールド。スキャンは開始値から始められ回数が正の場合はテキスト文字列の末尾に向かって続けられます。回数が負の場合はテキスト文字列の先頭に向かって続けられます。「0」は回数の値としては無効なため、実行結果はゼロが返されます。
戻り値のデータタイプ
数字
Substitute
指定したテキスト内のすべての検索テキストの文字列をテキスト内で置換テキストに置換したテキスト文字列を返します。構文
Substitute (テキスト ; 検索テキスト ; 置換テキスト)
引数
テキスト - 任意のテキスト式またはテキストフィールド検索テキスト - 任意のテキスト式またはテキストフィールド
置換テキスト - 任意のテキスト式またはテキストフィールド
戻り値のデータタイプ
テキスト
Right
テキストの右から指定した文字数分のテキストを返します。構文
Right (テキスト ; 文字数)
引数
テキスト - 任意のテキスト式またはテキストフィールド文字数 - 任意の数値式、または数値を含むフィールド
戻り値のデータタイプ
テキスト
Length
フィールド内の文字数を返します。これにはスペース、数字、特殊文字もすべて含まれます。構文
Length (テキスト)
引数
テキスト - 任意のテキスト、数字、日付、時刻、タイムスタンプ、またはオブジェクトのフィールド、または任意のテキスト式または数値式戻り値のデータタイプ
数字
PatternCount
テキストに、検索テキストで指定された文字列がいくつ含まれているのかを返します。構文
PatternCount (テキスト ; 検索テキスト)
引数
テキスト - 任意のテキスト式またはテキストフィールド検索テキスト - 任意のテキスト式、または検索する文字の集合を表すテキストフィールド
戻り値のデータタイプ
数字
の6つのテキスト関数。
これをスクリプトにする場合は、
スクリプトの新規作成から、「フィールド内容の全置換」⇒「ターゲットフィールドの指定」で姓フィールドと名フィールドの二つを作れば良い。