• ベストアンサー

エクセル並べ替え

エクセルで名簿を五十音順に並べたいのですが、「なかやま」、「ながい」だと「ながい」が先に来てしまいます。”か”と”が”は”か”の方を優先させたいのですが、どうすればよいでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

何十年コンピュターの利用者であったのですが、自分の考えていたイメージと違うこの事実は予想外で衝撃的でした。 か 9259 が 9260 のコードなので「か」が昇順で先出すると思っていました。 #1のご回答をみて、同様のことを違った方法でやれそうに思って A列にひらがな文字列があるとき、3列列挿入して (A6でやったが、特に意味はありません) B列に=CODE(MID(A6,1,1)) C列に=CODE(MID(A6,2,1)) D列に=CODE(MID(A6,3,1)) 以下あればF,G、H・・の第2引数を4,5,6・・とする。適当な文字数で打ちきる。 そこでB、C、D列でソートする。 エクセルで4列以上のソートは解説書に解説あり(略)。 下記のように並ぶ。 (A列) (B列) (C列)  (D列) なかやま 9290 9259 9316 ながい 9290 9260 9252 あるいはc列に=CODE(MID(A6,1,1))&CODE(MID(A6,2,1))&CODE(MID(A6,3,1))も出きるようです。 929092599316 そうすれば、C,D、Eを使って、先頭から9文字までなら、列数を3列以下に出来そうです。 通常名前などなら先頭から読みのかなの4-5文字で実用の順序になるでしょう。

yosimune12344
質問者

お礼

ありがとうございました!すばらしい! 感謝感謝です^^ お二人の考え方これからのエクセル人生?(笑)に役に立つことだと思います。また是非わからないことあったら教えて下さいm(_ _)m>ご協力頂いたお二人様。

その他の回答 (1)

  • zinchan
  • ベストアンサー率49% (97/197)
回答No.1

 初めてご質問されたようですので、まず、このカテゴリーでのエチケットについてお話いたします。  アプリケーションソフトのバージョンによっては、回答で得られた操作が可能なものと不可能なものがある場合があります。  よって、エクセルのバージョンや、場合によってはOSのバージョン、操作環境などの提示を必ず明記してください。でないと、最適な解が得られません。  また、そのアプリケーションソフトについての使用レベル(初心者~上級者)や、データ表の構成なども場合によっては説明していただかないと回答できない場合がありますので、今後は、それらの点をご留意くださった上でご質問ください。  さて、ご質問の件ですが、通常、五十音順並び替えのルールでは、清音も濁音も、同じ音と捉えられ、区別されることはありません。また、清音と濁音を区別することに意味があまりないことが多いので、エクセルにおいても、ご質問のような結果になってしまいます。  たとえ、メニューのツール→オプションで出たダイアログの、ユーザー設定オプションタグで、あなたのルールに従った新規リストを作っても、できません。  それでも清音と濁音で、清音を優先させたいのであれば、面倒ですが、関数式の表を作成して並び替えさせることが可能です。  たとえば、名前が列記された列がA列だと仮定します。名前はA2セルから下にずらっと入っているとします。  B列が空白であるとすれば(埋まっていたら空白となる列名に置き換えてください)、たとえばB2セルに、 =LEN(A2)と入れてください。名前データの最終行まで、上記式をB列の対応する行にコピーしてください。A列の名前の文字数が表示されます。  B列の最大値を調べます。  任意のセルに、=max(b:b)と入れ、出てきた値が最大文字数です。  C列以降の列(埋まっていたら空白となる列名に置き換えてください)に、最大文字数に該当するまで、C列1行目から、d列以降の1行目に1から順に番号をつけていきます。  sheet2(何も入っていないシート)のA列に、 あ い う え お か が き ぎ く ぐ・・・ ん と、ご希望の五十音の並びの順に一文字ずついれてきます。となりのb列に、「あ」には11、「い」には12・・・と、順番に2桁の番号を入力します。  また、sheet1にもどります。次に、C2セルに、 =IF($B2>=C$1,VLOOKUP(MID($A2,C$1,1),Sheet2!$A$1:$B$70,2),"00")と入力します。  この式を、最終行の最終列までコピーします。  最終列の左の列に、 =CONCATENATE(C2,D2,E2,F2,・・・)と、最終列までのセル番地を入れた式を入力します。  最後に、名前の入った最初の列から、=CONCATENATE(C2,D2,E2,F2,・・・)までの列の、最初の行~最終行までを範囲選択して、メニューのデータ→並び替えで、並び替えで最優先されるキーに、=CONCATENATE(C2,D2,E2,F2,・・・)の入っている列を指定し、okボタンをクリックします。  その際、「数値に見えるものは数値として並び替えを行う」か、「数値とテキスト形式の数値を分けて並び替えを行う」のどちらかを選択するよう指示されたら、後者を選択してokボタンをクリックします。  希望の順番で並び返されるはずです。

yosimune12344
質問者

お礼

初めての私にルールから教えていただき大変ありがとうございました。この回答は大変参考になりました。ちなみに、、、おはずかしながら。。エクセルは10年近くさわっております・・・・。経験じゃないですね^^ エクセルの可能性感じました。。感謝感謝です。

関連するQ&A