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

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を
呼んで見てください。
お礼が遅くなりました。すみません。
おかげで、ソートの方法がわかりました。
また、最近大分VBAがわかるようになってきました。
ありがとうございました。
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では、この場違い(?)のアルゴリズムが出てきますので、それで覚えるようなものです。
No.1
- 回答日時:
1行のソートは理解できているのでしょうか?
できているならば上段と下段を足す(上段*10+下段)ことで
いっぺんにソートできると思いますが。
ソートしたいのか勉強したいのかどっちでしょうね。
勉強ならば自分で解析したほうがよいと思うし。
全文はのせませんでした。
参考URL:http://www5d.biglobe.ne.jp/~tomoya03/shtml/algor …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# DataGridView のヘッダーセ...
-
Excelですべての組合せ(重複組...
-
System.IO.Directory.GetFiles...
-
MSFlexGridのSortメソッドについて
-
VBA基本構文の作り方 2列の...
-
C++ 入力した3つのint型の整数...
-
DataGridView の sort
-
配列を使わずに、変数名を動的...
-
Integer変数をカラにしたいので...
-
ExcelVBAでのkernel32(64bit)
-
isalpha()関数について
-
Run-Time Check Failure #3とい...
-
allocってなんですか?
-
define で 配列
-
CStringからchar*への型変換に...
-
C言語 配列の長さの上限
-
「#undef」と「#define」の使い...
-
VBAのプログラムで、DIAG = 1# ...
-
C言語の配列のサイズ
-
C言語のポインタに直接アドレス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
あるディレクトリ内のファイル...
-
VBA基本構文の作り方 2列の...
-
VB.NETでファイル名順にファイ...
-
ファイル名「1.jpg ~10.jpg~...
-
C# DataTableの行をソートしてD...
-
Excelですべての組合せ(重複組...
-
DataGridViewソート時に先頭行...
-
構造体配列のソート
-
バブルソートとセレクションソ...
-
VB2005 符号を踏まえた降順ソ...
-
DataGridViewの複数列を連動し...
-
Verilog でのソートの仕方
-
datagridviewの並べ替え
-
2次元配列を複数項目でソートし...
-
VBScriptで重複レコードを削除...
-
GridViewで列のソートを無効に...
-
4番目以降の並べ替え
-
DataGridViewの昇順降順。
おすすめ情報