エクセル2003のデータソート方法とマクロ作成

このQ&Aのポイント
  • エクセル2003で指定したデータをソートする方法について教えてください。ソート前とソート後のデータを示し、ソート後の結果を得られるマクロの作成方法も教えてください。
  • エクセル2003でのデータソートについての詳しい方法と、ソート前とソート後のデータ例を示してください。また、ソート後の結果を得るためのマクロの作成方法についても教えてください。
  • エクセル2003でのデータソート方法と、ソート前とソート後のデータ例を示してください。ソート後の結果を得るためのマクロの作成方法についても教えてください。
回答を見る
  • ベストアンサー

こんなソートがしたいです。教えてください!

エクセル2003で 下記のようなデータをソートし、 【ソート前】 2208550 92059184 92059174 92059174B 92059174A 92059174C 1348535 19777225 2519034 2519034D 2519034B 2519035A 2519035C 【ソート後】 1348535 19777225 2208550 2519034 2519034B 2519034D 2519035A 2519035C 92059184 92059174 92059174A 92059174B 92059174C 上記ソート後の結果を得られるマクロを作りたいです。 よろしくお願いいたします。

  • QPIE
  • お礼率40% (8/20)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

A1セルから生データが並んでいるとして。 Sub Sample1()  Range("B:B").Insert shift:=xlShiftToRight  With Range("A1:A" & Range("A65536").End(xlUp).Row)   .Offset(0, 1).Formula = "=""_""&A1"   Range("A:B").Sort key1:=Range("B1"), order1:=xlAscending, header:=xlNo  End With  Range("B:B").Delete shift:=xlShiftToLeft End Sub

QPIE
質問者

お礼

ありがとうございました!

関連するQ&A

  • エクセル マクロ VBA での部分参照ソート

    エクセル2003で 下記のようなデータをソートし、 【ソート前】 2208550 92059184 92059174 92059174B 92059174A 92059174C 1348535 19777225 2519034 2519034D 2519034B 2519035A 2519035C 【ソート後】 1348535 19777225 2208550 2519034 2519035A 2519034B 2519035C 2519034D 92059184 92059174 92059174A 92059174B 92059174C 上記ソート後の結果を得られるマクロを作りたいです。 文字列の右にABCが付与されるコードです。 よろしくお願いいたします。

  • クライアントの自由にソートする

    お世話になっております。 現在データベースの中に下記のようなデータが存在するとします。 A B C D 1 2 3 4 (Aのカラムに1) (Bのカラムに2) と言う具合にデータが入っています。 そこで質問なのですが、クライアントの自由にABCDのカラム内のデータをソートさせるにはどのようにしたらよいでしょうか? 現在は、データベースのテーブルを下記のようにする対処方法しか思いつかないのですが、できれば上記テーブル構成のままソートさせたいのですが何か良い方法は御座いませんでしょうか? 例)  クライアントがA D B C の順にソートしたい場合 テーブル名:TB1 A  1  順位1 B  2  順位3 C  3  順位4 D  4  順位2 select * FROM TB1 A ORDER BY 順位 ASC 出力: 1 4 2 3

  • excel 7条件一括のソート方法

    excelの表を7条件 一度の操作でソートしたいです。 A      B     C    D    E     F     G     H       data1  data2 小計1   data3  data4  小計2   合計 Aさん   28    27     55    30    25     55    110 Dさん   29    26     55    30    25     55    110 Cさん   27    28     55    29    26    55     110 Bさん   28    28     56    27    27    54     110 上記のEXCELの表があった場合の ソート条件  1 H列の数が少ない順  2 1が同じ場合Gが少ない順  3  2が同じ場合Fが少ない順 4 3が同じ場合Eが少ない順 5 4が同じ場合Dが少ない順 6 5が同じ場合Cが少ない順 7 6が同じ場合Bが少ない順 となるように するには どうしたらよいでしょうか?    間違いをなくすために 数度のソートを繰り返すことはしたくありません。         よろしくお願いいたします  

  • 配列のソートについて質問です。

    配列のソートについて質問です。 2つのキーで配列の中身をソートしたいのですが、スマートな書き方があれば教えてください。 そもそも間違っている、などのご指摘でもありがたいです。 @t1 = map {(split /,/)[1]} @data; @t2 = map {(split /,/)[2]} @data; @data = @data[sort {$t1[$a] <=> $t1[$b] or $t2[$a] <=> $t2[$b]} 0 .. $#t1]; @dataの内容 A,1,2 B,1,3 C,2,1 D,3,2 E,3,1 F,1,1 出力結果 F,1,1 A,1,2 B,1,3 C,2,1 E,3,1 D,3,2 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 配列のソートについて

    配列をソートした時、もともとデータのあった配列番号を記憶しておきたいのですが いい方法はないでしょうか (31,55,84,20,96,14); //1 2 3 4 5 6 ↓ (14,20,31,55,84,96) //6 4 1 2 3 5    ※ソート前の配列番号 いくつかの行(配列A)の、違う列にあるデータを抜き出して配列Bにまとめた後、配列Bをソート その後、配列Bのもともとの順番の位置の行にあるデータを上からコピーしていく感じで行ごとのソートを考えています イメージはこんな感じです a[0]=[1,512,200]; a[1]=[3,100,1]; a[2]=[4,100,265]; a[3]=[8,300,1]; //ソート対象を抜き出す b[0]=a[0][1]; b[1]=a[1][2]; b[2]=a[2][0]; b[3]=a[3][1]; b.sort(); c[0]=a[b[0]のソート前の配列番号]; c[1]=a[b[1]のソート前の配列番号]; c[2]=a[b[2]のソート前の配列番号]; c[3]=a[b[3]のソート前の配列番号];

  • 【Excel2010】複数の範囲をソートするには?

    初めまして、dtraと申します。 早速ですが質問を。 Excel2010を使用しているのですが、以下のような状態でExcelの機能・またはマクロを使ってソートをする方法はあるでしょうか? 1枚目 氏名 データ1 データ2 データ3... Bさん... Cさん... Dさん... 2枚目 氏名 データ1 データ2 データ3... Eさん... Fさん... と、データ数が多くなり印刷時の用紙が2枚以上になってしまう時に、 1枚目 氏名 データ1 データ2 データ3... Bさん... Cさん... Dさん... 2枚目 氏名 データ1 データ2 データ3... Eさん... Fさん... Aさん... このようにAさんのデータを入力した後、 1枚目 氏名 データ1 データ2 データ3... Aさん... Bさん... Cさん... 2枚目 氏名 データ1 データ2 データ3... Dさん... Fさん... Gさん... と、名前の昇順で全体をソートしたいのです。 今の所はデータを配列に格納してから新たに書き込ませる方法を取っていますが、データ量が多くなる事が予想されるので何か方法が無いかと質問に来ました。 解決策が思い浮かぶ方、どうか回答をお願いします。

  • 配列の連想配列のソート

    お世話になります。mooTaihenです。 Perlで配列のソートが出来なくて困っております。 お忙しいところ、誠に申し訳けありませんが、ご教示をお願い致します。 【内容】  サンプルソースに示した様なデータ構成をソートしたいのですが、思惑通りに行きません。  期待しているソート結果は、 a1 b3 b4 c2  です。  <サンプルソース> my @data; $data[0]{name} = "b"; $data[0]{cnt} = 4; $data[1]{name} = "c"; $data[1]{cnt} = 2; $data[2]{name} = "b"; $data[2]{cnt} = 3; $data[3]{name} = "a"; $data[3]{cnt} = 1; @data2 = sort {chg($a,$b)} @data; foreach (@data2) { print $_->{name} . $_->{cnt} . "\n"; } sub chg { my(@s,@d)=@_; return $s[0]{name} cmp $d[0]{name} and $s[0]{cnt} <=> $d[0]{cnt}; }  <出力結果> a1 b3 c2 b4

    • ベストアンサー
    • Perl
  • 配列のソート

    下記のような形でデータを取得し結果を配列に格納し、 降順にソートしたいのですが、いい方法が見つかりません。いい方法はあるでしょうか。よろしくお願いします。 テーブル構造(test) ID|name |point|area| ==================== 1 |Aさん|56 | A | 2 |Bさん|12 | B | 3 |Cさん|24 | B | 4 |Dさん|34 | B | $sql = "select * from test"; $result = mysql_query($strSQL); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { ここで配列に格納 } 配列への格納方法と、pointの降順にソートする 方法が知りたいです。 最終的に、Aさん、Dさん、Cさん、Bさんと なるようにしたいです。

    • ベストアンサー
    • PHP
  • エクセルでのソート

    こんにちは いつもお世話になっています エクセルのソートについて教えてください。 以下のようなデータがA列にあります。 Sheet1 Aグループ 愛知県 青森県 秋田県 Bグループ 石川県 茨城県 岩手県 愛媛県 Cグループ 大分県 大阪府 岡山県 沖縄県 香川県 鹿児島県 B列以降にデータがあり、複数グループが複数シートに渡ってあります。 ソート手順は例えば、Aグループ、愛知から秋田を範囲選択しソート、次にB、石川から愛媛を範囲選択しソート、以下同じ、Sheet1が済んだらSheet2へ、という作業手順です。 グループごとの件数は異なるが、ソートする優先キー(列)は第一がB列、第二がC列で同じです。 ソート処理自体はマクロの自動記録でやっていますが、グループごとに範囲選択しマクロを使う手順です。 ここで質問ですが、複数シートに複数グループがあります。各シートの各グループの件数は不一致です。これらのグループをなるべく簡単に上記のような同一基準でソートするにはどうすればいいでしょうか。

  • 多段ソート

    C言語というよりはアルゴリズムの話です。 [名前], [生年月日] の2つのカラムで表される固定長の行データが羅列されたファイルがあります。 また、各カラムを比較して行をソートした場合にどの行が何番目にくるかといったインデックス情報を木構造で保持したファイルがあります。 (このファイルは行データの追加・削除時に更新される) これらのファイルを利用して、生年月日でソートし、かつ日時が同じ場合は名前順にソートした場合の上から10個分だけのデータを取り出したいのですが、効率のよい方法は無いでしょうか? 全データを読み込んでから、バブルソート等の順序を崩さないソートを多重にかけることはなるべく避けたいのです。 そのためにソート済みのインデックス的な役割を持つファイルを用意しているのですが、多段ソート時にどう応用すればよいのかわからなくなってしまいました。 例 日時、名前の順にソートされた上4つ分のデータが欲しい。 【一覧】 [1行目] 10/20, Aさん [2行目] 11/30, Fさん [3行目] 9/10, Cさん [4行目] 11/30, Bさん [5行目] 12/10, Dさん 【生年月日でソートされた インデックス】 9/10, 3行目 10/20, 1行目 11/30, 2行目 11/30, 4行目 12/10, 5行目 【名前でソートされた インデックス】 Aさん, 1行目 Bさん, 4行目 Cさん, 3行目 Dさん, 5行目 Fさん, 2行目 得たい結果 [3行目] 9/10, Cさん [1行目] 10/20, Aさん [4行目] 11/30, Bさん [2行目] 11/30, Fさん

専門家に質問してみよう