人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのマクロの質問です。
名前から名字を取り出すにはどうしたらよいでしょうか?名前は全角スペース、半角スペース、スペースなしの3種類があり、スペースなしの場合はフルネームのままとします。
namae namae2
山田 太郎→ 山田
三田村 太郎→三田村
山本花子→ 山本花子

namaeはフルネーム、namae2は名字(スペースのない場合はフルネーム)

▼以下のようにしてみましたが3文字の名字「三田村」の場合、2文字「三田」となってしまいます。
Dim namae As String
Dim namae2 As String
namae2 = Left(namae, Len(namae) - InStrRev(namae, " ", -1))

どのように書けばよいか教えてください。
よろしくお願いいたします。

●質問者: icta
●カテゴリ:コンピュータ
✍キーワード:as len String エクセル フルネーム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●50ポイント

標準モジュールに下記のように定義して、利用してどうでしょうか。

Function getFirstName(srcName) As String
 Dim names
 names = Split(Replace(srcName, " ", " ")) '--- 全角スペースは半角に置換して処理
 getFirstName = names(0)
End Function

サンプルとしては下記のようになります。

Sub main()
 Debug.Print getFirstName("山田 太郎")
 Debug.Print getFirstName("山田 太郎")
 Debug.Print getFirstName("山田太郎")
End Sub

この方法のメリットは、セルのA1にデータがあった場合 A2セルで

=getFirstName(A1)

というようにも使用できます。


2 ● SALINGER
●50ポイント

そのまま直すと

 Dim namae As String
 Dim namae2 As String
 namae2 = Left(namae, Len(namae) - InStrRev(StrConv(namae, vbNarrow), " ") + 1)

Mookさんのように関数を作るのもいいかもしれませんね。

でもカタカナの名前の人もいますのでそこは変更しないといけないかもしれません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ