- ベストアンサー
外国人の名前の並べ替え
エクセルで1つのセルに外国人の名前が以下のように入っています。 Daniel Rumokach Fuad Amin Guillermo Igor Jim Leighton Seil Sullivan ・ ・ ・ ・ 左が名前で右が性なんですが、 これをそのままソートかけると、Daniel Rumokachが一番先頭にくるところを「性」でソート、 つまり、Fuad Aminが一番先頭にくるようにしたいのです。 さらに、ミドリネームがある人もいるので、その人も最後の単語(性)でソートかけるようにしたいんですが、どうしたらいいでしょう??
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
名前がA列として 区切りが、半角の空白として、B1に =IF(ISERROR(MID(A1,FIND(" ",A1)+1,100)),A1,MID(A1,FIND(" ",A1)+1,100)) 右に、1個フィル、下フィルすると、 B列にMiddle Name+Last Nname(或いは、Last Nameのみ) C列にLast Name が表示されると思いますので 後は、並び替えの順位にC列、次はB列、或いはA列で並び替えればと 思います。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 一般的には、区切り位置で、空白を区切ってあげればよいだけだと思います。 右端の「姓」を出すだけですからね。 ただ、あえて、配列数式で作ってみました。「,(コンマ)」で区切られた、前側が、Family Nameで、後ろ側が、Given Names になります。 =MID(A1,COUNT(INDEX(FIND(" ",A1,ROW(INDIRECT("A1:A"&LEN(A1)))),,))+1,255)&", "&MID(A1,1,COUNT(INDEX(FIND(" ",A1,ROW(INDIRECT("A1:A"&LEN(A1)))),,)))
お礼
回答ありがとうございます。 ちょっと式が長すぎて・・・。 もう少し勉強してみます。
- imogasi
- ベストアンサー率27% (4737/17069)
コンピュタのソートは、ソートキーを作って、後は文字コード順に並べるだけの機能しかありません。 エクセルでフリガナでソートとかユーザー設定などができたので、エクセルから学び始めた人には、却って本質が、ぼやけてしまっている。何かエクセルなら1発設定や、関数のあるもので便利な方法があるかと質問をするらしい。それは無い。 ーー すなわち修正氏名を、どこかの列に作らないとどうしようもない。 ーー そこまでわかっている人なら スペースの後の部分か 第2スペースの後の部分を切り出すのはどうするか という質問になるはず。 ーー 第1スペースの後は Find関数でスペースの位置がわかるので =RIGHT(A1,LEN(A1)-FIND(" ",A1)) ーー 塊が3つの場合は A列 B列 C列 aaa bbb ccc bbb ccc ccc dddd ff ff ff as dfg dfg dfg zxc dfgh dert dfgh dert dert B1は =RIGHT(A1,LEN(A1)-FIND(" ",A1)) B4まで式を複写 C1は =IF(ISERROR(FIND(" ",B1)),B1,RIGHT(B1,LEN(B1)-FIND(" ",B1))) と入れてC4まで式を複写。 結果 上記の通り 列C、B、Aの優先度でソートする。 B,Cの関数はネスとして1つにできるとおもう。 また違う解き方もあるかもしれない。 範囲選択 データー区切り位置ースペース・・で各セルに分離しての方法も使えるかも知れない。 ーー VBAでやるのも、(スペースで)Split関数という便利なものがあるので簡単です。 ーー 区切りは半角か全角か統一すること。 上例は半角の場合の例。
お礼
回答ありがとうございます。 関数の解説もして頂きまして、非常に勉強になりました。
A B 1 Daniel Rumokach Rumokach, Daniel 2 Fuad Amin Amin, Fuad 3 Guillermo Igor Igor, Guillermo 4 Jim Leighton Leighton, Jim 5 Seil Sullivan Sullivan, Seil 6 Hannah Taylor Gordon Gordon, Hannah Taylor 7 Jerry O'Connell O'Connell, Jerry 8 Bridgette L. Wilson Wilson, Bridgette L. B1: =MID(A1,FIND("_",SUBSTITUTE(A1," ","_",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,99)&", "&TRIM(SUBSTITUTE(A1,MID(A1,FIND("_",SUBSTITUTE(A1," ","_",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,99),""))
お礼
回答ありがとうございます。 できれば「コンマ」は使わない方向で作業を進めたかったのです。 説明がたりなくてすいません。
お礼
↑お礼のつもりが、補足のところに入力しちゃいました。 失礼しました。
補足
回答ありがとうございます。 望みどおりの作業が出来そうです。 私には使い方の解らないエクセルの関数がまだまだ多くて・・・。