『アルファベット一文字or二文字の昇順並び替え』(あいろん) よろしくお願いします。 A4から下に 項目 並び替えキー X Y CD Z AA B A (300行ほど) と記号が入っています。 B5以下に式を入れて下記のように並び替えたいのですが、どんな式を入れればいいですか? アルファベットは最大2文字。一文字の場合と二文字の場合があります。 作業列を使っていただいてもかまいません。 項目 並び替えキー A B X Y Z AA CD < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- アルファベットは小文字もあるんですか? ある場合、並び順はどうなるんですか? (半平太) 2019/06/16(日) 20:18 ---- すべて半角大文字です (あいろん) 2019/06/16(日) 20:26 ---- >B5以下に式を入れて B5セル =INDEX(A:A,MOD(SMALL(INDEX((CODE(RIGHT(" "&A$4:A$10,2))&CODE(RIGHT(A$4:A$10)))*1000+ROW(A$4:A$10),0),ROW(A1)),1000)) 下にコピー <結果図> 行 _A_ _B_ 4 X 5 Y A 6 CD B 7 Z X 8 AA Y 9 B Z 10 A AA 11 CD (半平太) 2019/06/16(日) 20:53 ---- >作業列を使っていただいてもかまいません。 だったら、C列を作業列として C5 =IF(A5="","",COLUMN(INDIRECT(A5&1))) B5 =IFERROR(SUBSTITUTE(ADDRESS(1,SMALL($C$5:$C$300,ROW(A1)),4),1,""),"") 下コピー 参考まで (笑) 2019/06/16(日) 21:52 ---- 並び替えを手動でやっても良いと言うのであれば、DECIMAL関数使えば一発ですよ。 =DECIMAL(A1,36) 2番目に36を渡すと、0〜9,A〜Zまでの36進数を10進数に変換してくれるので、出現するのが大文字アルファベット限定ならこれで対応できると思います。 (名無し) 2019/06/16(日) 23:52 ---- 自動並び替えできるようにしてみました。 =INDEX($A$4:$A$10,MATCH(SMALL(INDEX(DECIMAL($A$4:$A$10,36),0),ROW()-3),INDEX(DECIMAL($A$4:$A$10,36),0),0)) (名無し) 2019/06/17(月) 00:12 ---- データ量は300件ほどで変動ありなんですよね? 以下でどうですか。 B5 =IFERROR(BASE(AGGREGATE(15,6,ROUND(1/(1/DECIMAL(A$4:A$400,36)),0),ROW(A1)),36),"") 下にフィルコピー (sy) 2019/06/17(月) 00:34 ---- Excel2010との事なので、DECIMAL関数は使えないかと。 作業列に「=RIGHT(" "&A5,2)」として必ず2文字にしてから、これをキーに並び替えでどうでしょうか。 (???) 2019/06/17(月) 10:08 ---- この質問はもしかして 並べ替え自体は数式ではなく並べ替え機能でやる。 そのためにB列にどんな式を入れたらよいか、ということ? だとしたら、一応訂正 A B 4 項目 キー 5 X 24 6 Y 25 7 CD 82 8 Z 26 9 AA 27 10 B 2 11 A 1 ・ B5 =COLUMN(INDIRECT(A5&1))  A列のデータ最終行までコピー B列昇順で並べ替え 以上、参考まで (笑) 2019/06/17(月) 11:11 ---- Len関数の結果を第一優先キー 元の文字列を第二優先キーで ソート処理を行う、ではダメなんでしょうか? 式が一番簡単なわけではないと思う。 データ入力の都度、即時対応が必要なら 躊躇なくマクロを使う方がよいと考えます。 (γ) 2019/06/17(月) 13:08 ---- みなさん早々にありがとうございました。 ・DECIMAL関数がエラーになるので調べたら2010には使えないようです。 ・まさか一発で並び替えができるとは驚きです。 ・(笑)さんお察しの通りです。 言葉足らずでしたが、C〜Lにもデータがあり 並び替えキーを設定して表全体を並び替えたかったのです。 =IF(A5="","",COLUMN(INDIRECT(A5&1))) これを使わせていただきます。柔軟な発想恐れ入ります。 (あいろん) 2019/06/17(月) 20:07