アプリ版:「スタンプのみでお礼する」機能のリリースについて

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時からがんばっているのですが、一向にわからないです。。
お時間ありましたら、どなたか教えていただけないでしょうか?

 

A 回答 (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を
呼んで見てください。
    • good
    • 1
この回答へのお礼

お礼が遅くなりました。すみません。

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

お礼日時:2007/04/28 21:06

こんにちは。



>excel VBA を最近学び始めたのですが、

>「かんたんプログラミング EXCEL VBA」を読んだ知識レベルです。

三部の全部読みましたか?

並べ替えアルゴリズムですが、BubbleSort は、古典的なアルゴリズムですが、Excelでは、あまり使われません。そのアルゴリズムを使うTPOというのは、Excel VBAでは、非常に限られています。

その理由は、[並べ替え(Sort)]機能が、Excelでは備わっていますので、必要ないのです。

では、BubbleSort アルゴリズムが分かるレベルというと、だいたい、Excel VBAが1年以上経ったレベルというか、ここのカテゴリでしたら、回答者としてVBAの質問の7~8割ぐらいは解けるレベルではないかと思います。逆にいうと、VBA専門掲示板などを覗いていると1年に1度ぐらいは、Excel VBAでは、この場違い(?)のアルゴリズムが出てきますので、それで覚えるようなものです。
    • good
    • 0

1行のソートは理解できているのでしょうか?


できているならば上段と下段を足す(上段*10+下段)ことで
いっぺんにソートできると思いますが。

ソートしたいのか勉強したいのかどっちでしょうね。
勉強ならば自分で解析したほうがよいと思うし。
全文はのせませんでした。

参考URL:http://www5d.biglobe.ne.jp/~tomoya03/shtml/algor …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています