• ベストアンサー

excel VBA の条件をつけての列ごと並び替える方法がわかりません。

excel VBA を最近学び始めたのですが、 ソートで、 4 8 3 1 7 8 8 2 8 9 6 2 5 1      ↓ 1 3 4 7 8 8 8 6 9 2 2 8 5 1      ↓ 1 3 4 7 8 8 8 6 9 2 2 1 5 8 と並び替えるソートのVBAがわかりません。一回目のソートで1行目を基準に列ごと昇順?に並び替え、二回目のソートで1行目の昇順を満たしながら二行目の数字を基準に列ごと昇順にソートしたいのです。 検索をかけて、バブルソートのVBAなどを見てみましたが、難しくて理解できません。(この前こそ、「かんたんプログラミング EXCEL VBA」を読んだ知識レベルです。) 昨日の18時からがんばっているのですが、一向にわからないです。。 お時間ありましたら、どなたか教えていただけないでしょうか?  

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

  • ベストアンサー
noname#95859
noname#95859
回答No.3

エクセルの並び替えのメニューを選んで、左下(だと思います) 「オプション」ってあります。これを開いて、2番目かしらの 「方向」を列単位にします。「OK」で戻ると、第1候補、第2候補等が 行で指定できるように変わります。 ここで、第1優先=1行、第2優先=2行 とします。 これで、貴兄の期待するとおりの結果が得られます。 参考までに、VBAのコードは、 Sub Macro1() Columns("A:G").Sort _ Key1:=Range("A1"), Order1:=xlAscending, _ Key2:=Range("A2"), Order2:=xlAscending, _ Orientation:=xlLeftToRight End Sub 尚、マクロの記録を実施して、上記のマクロとの比較をしてみてください。 Sub Macro1() Columns("A:G").Sort _ Key1:=Rows("1"), Order1:=xlAscending, _ Key2:=Rows("2"), Order2:=xlAscending, _ Orientation:=xlLeftToRight End Sub でも、おなじです。sortの単語をハイライトさせて、F1を押して、Helpを 呼んで見てください。

shishsi
質問者

お礼

お礼が遅くなりました。すみません。 おかげで、ソートの方法がわかりました。 また、最近大分VBAがわかるようになってきました。 ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >excel VBA を最近学び始めたのですが、 >「かんたんプログラミング EXCEL VBA」を読んだ知識レベルです。 三部の全部読みましたか? 並べ替えアルゴリズムですが、BubbleSort は、古典的なアルゴリズムですが、Excelでは、あまり使われません。そのアルゴリズムを使うTPOというのは、Excel VBAでは、非常に限られています。 その理由は、[並べ替え(Sort)]機能が、Excelでは備わっていますので、必要ないのです。 では、BubbleSort アルゴリズムが分かるレベルというと、だいたい、Excel VBAが1年以上経ったレベルというか、ここのカテゴリでしたら、回答者としてVBAの質問の7~8割ぐらいは解けるレベルではないかと思います。逆にいうと、VBA専門掲示板などを覗いていると1年に1度ぐらいは、Excel VBAでは、この場違い(?)のアルゴリズムが出てきますので、それで覚えるようなものです。

  • taka0028
  • ベストアンサー率33% (19/57)
回答No.1

1行のソートは理解できているのでしょうか? できているならば上段と下段を足す(上段*10+下段)ことで いっぺんにソートできると思いますが。 ソートしたいのか勉強したいのかどっちでしょうね。 勉強ならば自分で解析したほうがよいと思うし。 全文はのせませんでした。

参考URL:
http://www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/SbSort.htm

専門家に質問してみよう