• 締切済み

Excelで英数字を昇順で並び替えたい

imogasiの回答

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

#4です。 参考に読んでください。 VBAで、私製関数を作ってみました。 標準モジュールというところへ、下記をコピペ。 Function keymk(x As Range) s = "" n = 0 fstchr = "y" For i = 1 To Len(x) y = Mid(x, i, 1) If Asc(y) >= 48 And Asc(y) <= 57 Then '数字文字 n = n * 10 + Val(y) Else '文字列 If fstchr = "y" Then GoTo P1 s = s & Format(n, "00") fstchr = "y" n = 0 P1: fstchr = "n" s = s & y End If Next i s = s & Format(n, "00") keymk = s End Function ==== シートのA列に下記データを入れる。 B2に、式を =keymk(A2) と入れて、下方向に式を複写。 結果は下記。 A1:A14のセル範囲に A列   B列 原データ 変換後 A1B1 A01B01 A1B5 A01B05 A1B13 A01B13 A2B1 A02B01 A2B5 A02B05 A10B1 A10B01 A10B10 A10B10 B1A1 B01A01 B1A5 B01A05 B1A10 B01A10 B4A3 B04A03 B10A2 B10A02 C12A3 C12A03 色々な場合でエラーが出ないかテスト必要。 (注)数字部分は2桁以下に限る。 数字は半角に限る。 もっと簡単なVBAコードにならないかと思いつつ、力不測で・・。関数の難しい式の組み合わせと変わらない?

関連するQ&A

  • EXCELで昇順

    EXCELでナンバー(A1列)と枚数(B2列)を連動しながら昇順する方法がどうしてもうまくいきません。 枚数の少ないものからA1を連動させて並べ変えたいのです できたら、同じ枚数の中でも0のNo.のものも昇順で並べ替えたい のです。gooの中でも色々とあったのですが、やり方が間違って いるのかうまく出来ません。 言葉足りずにわかりにくいとは思いますがよろしくお願いいたします。  A1列    B2列 No.      枚数  350000 |  200 011111 |  200 400000 |  100    200001 |   50 010000 |  200

  • エクセルの関数についての質問です。

    エクセルの関数についての質問です。 画像のように横に1、2、3…(100くらいまで続きます)縦にA、B、Cの行があります(端が切れちゃってますが、A2にA、A3にB、A4にCです) B2から横の列にはそれぞれ☆や○等いろいろな記号が入ります。 そしてこの記号には特定の値が決められています。☆=10、○=5、△=3 B3から横には、B2の記号にそった数字が入ります。(10やら5等) そこまではIF関数で式を作ったのですが、ここからが問題でして… B2から横に1から100まで、記号(B3から横に数字)を入力していった時のB3列の合計が仮に212とします。 合計した値が200を越えてしまった場合、B4からの列に数字を入力するようにしたいのです。 (200ギリギリ前くらいまではB3の列で、それを越える時からB4の列に入力します。その際、B3列に入る数字は消えます) なおかつ可能であれば、このB4からの列に入るのはランダムにできるといいのですが…(画像では○の数字を下ろしていますが、☆の数字をおろしても良いし、△の数字をおろしても良い) ●計算式によって入力された数字(B3列)を特定の数字を越えた場合、別の枠(B4列)に移す関数はありますでしょうか?? ●また、それをランダム(関数)で選ぶことは可能でしょうか?? よろしくお願いします。

  • 昇順に並べ替え

    セルA1に50.1、セルB1にB、セルA2に49.9、セルB2にAと入力されています。 A列は、小数点第一位を四捨五入するので両方とも50と表示されています。 A列が同じ(この場合は50)時は、B列は昇順に並べたいです。 VBAで並び替えすると、数字は50.1と49.9なので1行目と2行目が入れ替わりません。 セルに表示されている数字での並び替えはどうしたら良いのでしょうか?

  • Excel 関数で上から順に数字を整列させる

    Excelで、下記表(例)に入力された数字を上から順に関数を用いて隣のB列に整列させたいです。 ・例 A1:A60の表があります。 ※以下A列に入力された数字とします 1 空白 2 20 3 空白 4 15 5 25 ・(省略、この間空白と考えて下さい) ・ ・ 59 10 60 空白 上記表(例)は、A2に20,A4に15,A5に25,A59に10それ以外は空白を表します。 上記表のセル内数字は全て手入力とします。 全てのセルが空白の場合もあります。 B列はB1:B5の5行です。 この入力された数字を関数を用いて、B列に上から順にB1に20,B2に15,B3に25,B4に10,B5は空白となるように整列させたいです。 B列セル結果は他シートに参照されますのでセルはロックを掛けています。 上記のことからデータの並べ替えも使えませんし昇降順でもありません。 上から順に整列させた数字を、B1:B5の5行内で上位5まで表示させます。 A列の行数が多いのでif関数も使えません。 なお、上記質問内に不明な点がありましたら補足させて頂きます。 以上、宜しくお願いします。

  • EXCEL セルの文字列の文字種の判別

    エクセルでセルの文字列が下記のいずれかを判断するにはどうすればよいでしょうか? セルの文字列は英字数字記号が前提で、漢字かな等は入っていません。 ・数字のみ ・英字のみ ・記号のみ ・英字と数字 ・英字と記号 ・数字と記号 ・英字と数字と記号

  • エクセル【昇順・降順で並べ替え】について

    エクセル【昇順・降順で並べ替え】について 下記のようにエクセル表に入力したものを23日→4日に並べ替えをしたいのです。 昇順をしてみたら、番号が狂ってしまいます。 日付け順に狂いなく並べ替えができる方法を教えてください。 どうぞ宜しくお願いします。 日付け 番号 ランク 1月4日 101 A 1月5日 102 C 1月9日 103 B 1月9日 104 A 1月19日 105 C 1月23日 106 A 1月23日 107 C 1月23日 108 C

  • セルの数字を昇順に並び替えて重複削除する方法

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】  添付図のとおり、2列×20行の数字が【入力値2列】欄に入っています。  この数字を昇順に並び替えて重複数字を削除したものを【重複チェック済2列】に  出力します。また、【入力値2列】欄の数字を【入力値1列】に縦1列にして数字 を昇順に並び替えて重複数字を削除したものを【重複チェック済1列】に出力しま す。具体的には下記(1)~(4)の手順です。質問は2列×20行での場合ですが、  2列×200行の場合でも上記のことができるようにしたいです。    *********************************** (1)入力値2列(A列・B列)に2つの値をセットします。 (2)入力値2列(A列・B列)の値を重複チェック済2列(D列・E列)に並べて昇順に並び替えて重複数字を削除します。 (3)入力値2列(A列・B列)の値を入力値1列(G列)に1列にセットします。 (4)入力値1列(G列)の値を重複チェック済1列(I列)に並べて昇順に並び替えて重複数字を削除します。 以上、よろしくお願いします。

  • エクセルの「昇順」での並べ替えについて質問いたします。

    エクセルの「昇順」での並べ替えについて質問いたします。 (例) 行に左からセルに現場、名前、成績(数字)、地域(東京等)が入力されていて、各々列をなしているシートがあります。地域を昇順にし、その内訳の中で現場を昇順 さらにその内で名前を昇順にしたいのですがフィルターの簡単な操作でできますか。 エクセルの初心者ですがフィルターには列の左右関係、文字と数字の優劣などがあるのでしょうか。フィルターについてご存知の方教えて下さい。

  • エクセルの昇順降順について

    質問させて下さい。 セル内に111,112,113と順に入力していって、 途中112Aと入力するとします。 このセル全体を昇順・降順すると111から始まる数字群は順になるのですが 112Aは別ものとして扱われ一番上か下に表示されてしまいます。 これを112と113の間に表示させる方法はないものでしょうか? どなたかご存じの方、詳しい方おられましたら教えて頂けますようお願いします。

  • エクセル イレギュラーなSUM関数

    会社で使うエクセル表を作っていますが困っています。 A列B列があり A5にはA1~A4の合計のSUM関数が入っています。 B5にもSUM関数を入れたいのですが B1~B4はイレギュラーな事があった場合のみ数字を入力し B5にはB1~B4に入力された数字の合計と B列に何も入力されていない隣のA列の合計を表示させたいのです。 例えるなら A1~A4に3を入力 A5はSUM関数がはいっているので12が表示されているとして B列はB1~B3は未入力 B4に7が入力された場合 B5にはA1~A3とB4の合計の16が表示されるようにしたいのです。 B4に7を入力したので隣のA4の3は合計しないという事です。 どうぞ宜しくお願い致します。