• ベストアンサー

エクセル2013 範囲を取得して並べ替え

A列2行目から9桁の同じ数字が入力されています。 同じ数字が入力されている行数は、いつも同じではありません。 A列の同じ数字の範囲を認識して G列で 「数値に見えるものはすべて数値として並べ替えを行う」で並べ替えを エクセルのマクロで教えてください。 例 A2からA4まで 123456789 の同じ数字 G2からG4まで 1-2-3や2-1-2や2-奥-1など・・・ A5からA6まで 147258369 の同じ数字 G6からG6まで 1-2-3や3-3-3など・・・ 入力されている行数は常に可変です。 途中、空白は存在しません。 宜しくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。 元データはSheet1にあるとして、Sheet2を作業用のSheetとして使用していますので Sheet2は使っていない状態にしておいてください。 尚、1行目は項目行になっていて、すべての列に何らかの項目名が入っているものとします。 Sub Sample1() Dim i As Long, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") .Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row With .Range("A1") .AutoFilter Field:=1, Criteria1:=wS.Cells(i, "A") .CurrentRegion.Sort key1:=.Range("G1"), order1:=xlAscending, Header:=xlYes End With Next i .AutoFilterMode = False wS.Cells.Clear End With End Sub こんな感じではどうでしょうか?m(_ _)m

maron1010
質問者

お礼

素晴らしいです。 動作確認できました。 ありがとうございました。

関連するQ&A

  • エクセルのマクロ

    A列にアルファベット、B列からE列まで数字が入力されている表があります。 A1から順に(A1→A2→A3→・・・)、A列の文字を調べてそれが"A"であった場合のみ、同じ行のB列からE列の最大値をF列に、最小値をG列にコピーする(A列の文字が"A"以外の場合は何もせず下の行を調べる)、ということを繰り返し、A列が空白になった時その作業を中止する、というマクロを作りたいのです。 もちろん、一つの表だけならA列で並べ替えをして関数を使えば簡単にできますが、表がたくさんあるので自動化したいと思います。 マクロに関してはまったくの初心者なので、お知恵をお借りできればうれしく思います。

  • Excel VBAで範囲選択後にソートしたい

    OS: Windows 2000 ソフトウェア名/バージョン:Excel2000 Excelマクロで以下のような処理をしたいのですが、どのように記述したらよいのでしょうか? マクロの記述例を教えてください。 (1)Excelの複数シート上にデータがA列とB列に以下のように並んでいる。  ※以下の例の場合、3行~6行はグループ01、8行~12行はグループ02、~ (2)グループ行単位の範囲指定を実行し、その中でB列のソートを実行したい。 (3)データ行の行数、グループの数はシートごとにばらばらで決まっていない。 (4)A列のデータ行は上4桁がブランク、グループ行は上2桁がブランクとなっている。 (5)B列には数値しか入っていない。 【行数】 【A列】     【B列】 (01行)  タイトル行1 (02行)  タイトル行2 (03行) △△△△データ01 数値(78979) (04行) △△△△データ02 数値(34533) (05行) △△△△データ03 数値(21423) (06行) △△△△データ04 数値(51343) (07行) △△グループ01 (08行) △△△△データ11 数値(43522) (09行) △△△△データ12 数値(23432) (10行) △△△△データ13 数値(42312) (11行) △△△△データ14 数値(24123) (12行) △△△△データ15 数値(54343) (13行) △△グループ02 (14行) △△△△データ21 数値(64353) (15行) △△△△データ22 数値(42343) ~ ◆上記の例でやりたいこと: 1:データ行の最初の行(03行)から最初のグループ行を探してその1行前(06行)までを範囲指定してB列の数値でソート 2:最初のグループ行の次の行(08行)から次のグループ行を探してその1行前(12行)までを範囲指定してB列の数値でソート 3:2のグループの次の行(14行)から~以下、データの最終行まで処理する。 以上、よろしくお願いします。

  • Excel マクロ 条件によるセルの結合

    テキストだとわかり辛いと思い、 画像を添付させていただきました。 3列の表があり、 A列に1~10までの数字(グループ名)を入力します。 これを、A列の数字が同じ場合、 B列とC列をセル結合したいのですが、 マクロで実現できるでしょうか? (行数は15行くらいあり毎日変わります) (最終行の次の行は空白です) (A列は結合してもしなくても問題ありません) Excel 2007 Windows10を使用しています。 おわかりの方がいらっしゃいましたら、 どうぞよろしくお願い致します。

  • エクセル マクロ 文字列からの行数の取得

    エクセルでマクロ初心者です。よろしくお願いします。例えば1列目にデータ名が入力されていてその個数が可変である場合(小計は末尾ではありません)小計行の1列目から数式をいれたいのですが、行数が固定でないため小計と書かれたセルの行数を取得したいのですが、わかりません。いい方法をお願いします。    A B C D データ aa bb cc 小計 ・ ・

  • エクセルで質問です

    いつもすいませんが教えて下さい。 例えば A列の4行目~16行目に空白と数値がランダムにはいっています。 これをB列の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関数も使えません。 なお、上記質問内に不明な点がありましたら補足させて頂きます。 以上、宜しくお願いします。

  • エクセルでの連番の処理

    お世話になります。 1行目に入力されたデータをルールに沿って2行目以下にどんどん追加していきたいと思っています。 まずD1、E1のセルに数字を入れます。 例:D1に3、E1に25 を入れてマクロを実行するとD列の2行目以下に3,4,5,6…25と連番で入力出来るようにしたいのです。 この例ではD列は24行目まで入力されています。そこで2行目から24行目までのA,B,C列にはそれぞれ1行目のA,B,C列と同じデータを入力します。なおA,B,C列は数字、文字列どちらもあります。空白の場合もあります。 この状態でA~E列の1行目のデータを変更し、仮にD1を2、E1を15としたとします。ここで再度マクロを実行すればD25に2、そして順に連番が入りD38に15が入るようにします。 同時に25行目から38行目までのA,B,C列にはそれぞれ1行目のA,B,C列と同じデータを入力します。 これの繰り返しです。 つまり2行目以下のD列で空白の行以下にどんどん連番を入れていく具合です。 前提としてD1、E1は整数しか入りません。またE1の数字はD1より大きいです。ただD1,E1に同じ数字が入った場合、その数字の1行分だけが入力されるようにします。 以上の処理が自動化できるマクロはできますか? アドバイス願います。

  • エクセルについて

    下記のデータについての質問です。 A列に日付、B列に時間(1時~0時)そしてC列は空白か もしくは数字が入っているデータが10年分あります。 10年分ですので 24時間×365日×10年ですので87600行になります。 更に閏年分一回につきプラス24行になるはずなのですが 実際には途中何か所か日時が飛んでおり、またその部分が 空白になっておらず、詰まっているため行数が暦どおりより 少くなっております。 ここで質問なのですが 日時が飛んでいる個所を空白にして 行数を暦どおりにするにはどうすれば良いでしょうか? また、この時C列も一緒にずらせるようにしたいのですが どのようにすれば良いでしょうか? よろしくお願いいたします。 マクロでも良いので、どなたかご教授いただけませんでしょうか?

  • エクセルでの範囲選択

    お世話になります。 列の合計を出すときの範囲を選択する場合 =SUM(F9:F●) =SUM(G9:G●)  F9,G9は不変。 ●にはF列 または G列のうち数値が入力されているセルで、一番下にあるものの 行番号をいれたい。 例えば F20 と G22 に数値が入っていたら ●=22 としたい。 (F21以下のF列と、G23以下のG列はすべて空白の場合) この場合はどうすればいいのでしょうか?

  • エクセルデータの並べ替えに関して

    エクセルデータの並べ替えに関して A列からH列まで数値が入っていて、それが8,000行くらいあります。(毎回変動します。) A1からH8000くらいのセルに値が入っています。 エクセルを縦長に使用しているので、このまま印刷をすると印刷面の右側半分以上が空白に なってしまいます。 マクロを利用して、これらの値を96行ごとに2列分けたいと思っていますが、どうやったら 良いか、教えていただけないでしょうか。 (マクロ実行前)--------------  A B C D E F G H 1 1 2 3 4 5 6 7 8  2 2 3 4 5 6 7 8 9 3 3 4 5 6 7 8 9 10 4 4 5 6 7 8 9 10 11 ・・・・・・ ---------------------------- のように下方向に数字が並んでいる場合、マクロを実行したら 次のようにしたいと思っています。 (マクロ実行後)--------------  A B C D E F G H (I) J K L M N O P Q 1 1 2 3 4 5 6 7 8(1行空き)97 98 99 100 101 102 103 104 2 2 3 4 5 6 7 8 9(1行空き)98 99 100 101 102 103 104 105 3 3 4 5 6 7 8 9 10(1行空き)99 100 101 102 103 104 105 4 4 5 6 7 8 9 10 11(1行空き)100 101 102 103 104 105 106 ・・・ 96 96 97 98 99 100 101 102 103(1行空き)192 193 194 195 196 197 198 199 97 193 194 195 196 197 198 199 200(1行空き)289 290 291 292 293 294 295 296 ・・・・・・ ---------------------------- (1)A1からH96までを切り取って、J1に貼り付ける。 (2)「(1)」で切り取って出来た空欄を削除して上方向にシフトする。 (3)A97からH192までを切り取って、J97に貼り付ける。 (4)「(2)」で切り取って出来た空欄を削除して上方向にシフトする。 といった操作を「切り取って出来た空欄を削除して上方向にシフトする。」という操作を しようとしたら上方向にシフトするデータがなくなるところまで続けたいと 思っています。

専門家に質問してみよう