- ベストアンサー
エクセル2003 a1~b100までを順番に並べたい
エクセルで各セルにa1~a100 b1~100の順番で並べ替えたいと思っています。 しかしa1,a100,a11,a12~a19, a2,a20というふうに なってしまいます。コレを解消するためにa001,a002というふうに 3桁になるよう0をつけたいと思っているのですが 関数かなにかで簡単にできる方法ありませんか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
A列にデータがあるとして、B1に次の式を入力して、必要なだけ下にコピーしてください。 =LEFT(A1,1)&TEXT(RIGHT(A1,LEN(A1)-1),"000")
その他の回答 (6)
- Wendy02
- ベストアンサー率57% (3570/6232)
#6の訂正 # 取り出し、Aの後の書式"000"というなら、こうすればよいと思います =LEFT(A1,1)&TEXT(SMALL(INDEX(MID($A$1:$A$200,2,4)*1,,),ROW(A1)),"000") ↓ =LEFT(A1,1)&REPLACE(A1,1,1,REPT("0",5-LEN(A1))) と読み替えてください。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 取り出し、Aの後の書式"000"というなら、こうすればよいと思います。 =LEFT(A1,1)&TEXT(SMALL(INDEX(MID($A$1:$A$200,2,4)*1,,),ROW(A1)),"000") 関数で並べ替えは、A,B と交じり合っているら、こうなります。 必ず、範囲は正確に入力してください。 =REPLACE(SMALL(INDEX((CODE(LEFT($A$1:$A$200,1))*1000+MID($A$1:$A$200,2,4)),,),ROW(A1)),1,2,CHAR((COUNTIF($A$1:$A$200,"A*")<ROW(A1))+CODE("A"))) となります。ただし、大文字・小文字の違いは、CODE("A") を、CODE("a")に換えてください。
=LEFT(A1,1)&TEXT(MID(A1,2,3),"000")
- Nouble
- ベストアンサー率18% (330/1783)
データは200件ですよね 今仮にA1:A200にデータが入っているものとします で データ位置と被らなければ何処でも良いので データを参照可能な位置に =char(int(small(index(code(left($A$1:$A$200,1))+value(right($A$1:$A$200,len($A$1:$A$200)-1))/100,),row(A1))))&text(mod(small(index(code(left($A$1:$A$200,1))+value(right($A$1:$A$200,len($A$1:$A$200)-1))/100,),row(A1)),1)*100,"000") と入力してください あとはこれを200件分下へフィルすれば終わりです パソで確認してないので文字切り出しの辺りがかなり不安ですが やり方はこの方向性でもいいと思います
- tom04
- ベストアンサー率49% (2537/5117)
No.2の補足です。 間違っていました・・・ 数字は3桁ですので "00"を"000"に変更してください。 失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
回りくどい方法かもしれませんが・・・ A列にデータが入力されていると仮定して A1に作業列として行挿入 A1セルに=LEFT(B1,1)&TEXT(SUBSTITUTE(B1,LEFT(B1,1),""),"00") とやれば A列に望みどおり(a09)などのように表示されると思います。 それをソートすればOKではないでしょうか? ちなみに↑の関数は (B1セルの左一文字表示)&(B1セルの左一文字を空白に置き換え、残りを2文字で表示) こんな感じで考えてみました・・・
お礼
みなさん 回答ありがとうございました。