• ベストアンサー

Excelの並べ替えについて

Excelの並べ替えについて 商品一覧の表を作っているのですが、そのデータには「数字」「アルファベット」「ひらがな」「カタカナ」が含まれています。 昇順で並べ替えを行うと「数字」-「アルファベット」-「ひらがな」-「カタカナ」の順番になりますが、それを例えば「ひらがな」-「カタカナ」-「数字」-「アルファベット」の順番で並べ替えを行うことは可能でしょうか? 現状では並べ替えを行ったあと範囲選択をして入れ替えをしていますが、それ以外に何かよい方法があればご教授お願いいたします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばA1セルにはデータとでも項目名があり、A2セルから下方にデータがあるとします。 そこで作業列を使って対応することにします。 B1セルには作業列1、C1セルには作業列2、D1セルには作業列3とでも入力します。 B2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($A2="","",IF(AND(CODE(ASC(MID($A2,COLUMN(A1),1)))>=9250,CODE(ASC(MID($A2,COLUMN(A1),1)))<=9331),CODE(ASC(MID($A2,COLUMN(A1),1)))/1000,0)+IF(AND(CODE(ASC(MID($A2,COLUMN(A1),1)))>=177,CODE(ASC(MID($A2,COLUMN(A1),1)))<=221),CODE(ASC(MID($A2,COLUMN(A1),1)))/10,0)+IF(AND(CODE(ASC(MID($A2,COLUMN(A1),1)))>=48,CODE(ASC(MID($A2,COLUMN(A1),1)))<=57),CODE(ASC(MID($A2,COLUMN(A1),1))),0)+IF(AND(CODE(ASC(MID($A2,COLUMN(A1),1)))>=65,CODE(ASC(MID($A2,COLUMN(A1),1)))<=122),CODE(ASC(MID($A2,COLUMN(A1),1))),0)) その後にA1セルから列の最後の行までを選択してから「並べ替えとフィルタ」で「ユーザー設定の並べ替え」を選んで作業列1を第一優先で、作業列2を第2優先で、作業列3を第3優先で「昇順」で並べ替えを行います。

puepue
質問者

お礼

作業列を作って試してみたら、思った通りにできました。 助かりました。 関数の内容は今からじっくりと見させていただき、実践で自分で作れるようにがんばります。 本当にありがとうございました。

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

全角半角考慮せず、左から5文字までみた場合、 http://okwave.jp/qa/q6037899.html?order=asc #2のCoalTarさんの回答を参考に、 対象セルがA1から始まると仮定すれば 作業列に =SUM(MOD(CODE(MID(JIS(A1)&REPT("ぁ",5),{1,2,3,4,5},1))-8491,658)*(10^{12,9,6,3,0})) 以下コピー。 これをキーにソートします。 基本はqa/6037899の考え方と一緒で、全角に揃えて >1文字ずつ分割してCODE化し優先順位を弄って桁数合わせてくっつける、 みたいな式です。 左から5文字で足りない場合、仮に15文字だと =MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),1,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),2,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),3,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),4,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),5,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),6,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),7,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),8,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),9,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),10,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),11,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),12,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),13,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),14,1))-8491,658) &MOD(CODE(MID(JIS(A1)&REPT("ぁ",15),15,1))-8491,658) ...な感じですが サスガに冗談ぽいですよね...orz

puepue
質問者

お礼

少々長い文字列も含まれているもので… ですが、こんな方法もあるのですね。 とても参考になりました。 短い文字列の場合、是非参考にさせていただきたいと思います。 ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

エクセルでのソートは数値以外の場合文字コードを元に並び替えを行います 文字コードは 半角数字<半角アルファベット<全角数字<全角アルファベット<全角ひらがな<全角カタカナ<漢字 の順で大きくなりますので普通に並び替えると 「数字」-「アルファベット」-「ひらがな」-「カタカナ」 の順になります 並び順を 「ひらがな」-「カタカナ」-「数字」-「アルファベット」 にするためには別に作業列を用意して =CODE(商品名データーセル)<9249 と入力し、データの並び替え時に作業列を最優先、商品名列を2番目に優先と設定して並び替えるとお望みの並び替えが可能と思われます ※数値9249はひらがな【ぁ】の文字コード番号です

puepue
質問者

お礼

早速のご回答ありがとうございます。 とてもシンプルな内容で嬉しい限りです。 ただ、この方法だとひらがなとカタカナが混在してしまいました。 私に理解力があれば応用させていただけたのですが、文字コード表から勉強しなおします。 ありがとうございました。

関連するQ&A