• ベストアンサー

スペースで区切られた氏名から性だけを抽出するには?

Excel2000です。 過去情報を色々調べてそれっぽいのは見つかってトライしているのですが、 なかなか応用が利かなくて上手く出来ませんので、教えて頂きたく投稿させて 頂きました。 例えば、セルA1に「山田 太郎」とあります。 姓名と名前は全角スペースで区切られています。 これをVBAを使用して、 スペース前の姓名「山田」を抽出して、係数に格納してファイル名などに利用 したいのですが、どうすればよいでしょうか? 簡単なことだと思うのですが、ハマってしまい困っています。お助け下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • avanzato
  • ベストアンサー率54% (52/95)
回答No.3

こんにちは。 #1さんのSPLITを使った方法がベストかと思います。 別の方法では Sub TEST()   Dim 苗字 As String   苗字 = Left(Range("A1").Value, InStr(Range("A1").Value, " ") - 1)   MsgBox (苗字) End Sub LEFTを使って苗字を取り出します。 INSTRで全角スペースが何文字かを調べスペースを含まないようにする為、-1して苗字の終端を調べています。

SHI-UE
質問者

お礼

早速のご回答ありがとうございます。 LEFTで色々試行錯誤していたのでこちらが入り易かったです。 #1さんのSplitも勉強してみます。 また、宜しくお願いします。

その他の回答 (3)

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.4

#3です。 #2さんの方法はちょっと面倒かと思いますが・・・。 置換するより =LEFT(A1,FIND(" ",A1)-1) の方が楽かと思います。 やっていることはFINDかINSTRの違いだけです。

SHI-UE
質問者

お礼

ありがとうございます。 そうですね。確かに=LEFT(A1,FIND(" ",A1)-1)の方が簡単だと思います。 ワークシート上でのこのやり方は、ネットで検索出来ていました。

  • srxmk3pro
  • ベストアンサー率53% (527/980)
回答No.2

VBAを使用しなければならないのでしょうか? セル1つからの抽出ならば、数式バー内でのマウス操作の問題だと思いますし、複数ならば「LEFT」関数と「置換」で処理します。 ・姓は1文字~3文字が大半なので、スペースを含め4文字抽出 ・抽出データーを「値を複写」で処理 ・「置換」は「全角スペース+ワイルドカードのアスタリスク「*」」をブランクに置き換え

SHI-UE
質問者

お礼

ありがとうございます。 ワークシート上に形跡を残さずにやりたかったので、 VBAでと考えました。

回答No.1

NameArray = Split(Range("A1").Value, " ") MsgBox "姓:" & NameArray(0) & vbCrLf & "名:" & NameArray(1) または tmp = InStr(1, Range("A1").Value, " ") MsgBox "姓:" & Left(Range("A1").Value, tmp - 1) & vbCrLf & _ "名:" & Mid(Range("A1").Value, tmp + 1) こんな感じでどうですか?

SHI-UE
質問者

お礼

早々のご回答ありがとうございます。 最初の2行の方で出来ました。 助かりました。また宜しくお願いします。

関連するQ&A

専門家に質問してみよう