• ベストアンサー

excel VBA de で、昇順で列ごと入れ換える方法がわかりません。

下記のようなソートをVBAで行いたいのですがわかりません。 5 6 3 8 5 5 8 4 6 1 1 5          ↓ 3 5 5 5 6 8 6 8 1 5 4 1     ↓ 3 5 5 5 6 8 6 1 5 8 4 1 一回目のソートで、1行目を基準に列ごと昇順に入れ換え、二回目のソートで一回目の条件を満たしたまま二行目を基準に列ごとソートしたいのです。 最近VBAを勉強し始め、「かんたんプログラミング EXCEL VBA」という書籍を読んだ知識レベルのため、自分で検索してソートの方法を学んでもわかりません。今日は、18時からパソコンに向かい、結局こんな時間になってしまいました。。。 お時間ありましたら、どなたか教えていただけないでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

これはエクセル(手)操作でできるようなので、簡単だと思います。 マクロの記録をとるだけ。 全データ範囲指定し データー並べ替えー オプションー列単位ーOK ソートキー第1 行1 ソートキー第2 行2 これで 3 5 5 5 6 8 6 1 5 8 4 1 のようになりました。 Range("A1:F2").Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("A2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlLeftToRight, SortMethod:=xlPinYin, DataOption1:= _ xlSortNormal, DataOption2:=xlSortNormal Orientation:=xlLeftToRightのところが通常と違うのかな。 朝時間がなく急いでいるので、勘違いしていたらすみません。

shishsi
質問者

お礼

朝早くから回答ありがとうございます。 エクセル操作でできたんですよね。知りませんでしたーー。。 エクセルでは、列を基準に入れ替えることしかできないと思っていたため、行列の入れ替えをしてソートそして行列の入れ替えで元にもどす、という操作をしていました。 僕が学ぶことは、VBAよりもまずエクセルだということに気づかされました。 ありがとうございました!

その他の回答 (2)

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.2

おはようございます 2回並べ替えるのではなく、 条件を2つにすればよいのではないでしょうか。 Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B2"), Order2:=xlAscending 仮に1行目を第一の条件としました。

shishsi
質問者

お礼

おはようございます! 朝早くから回答ありがとうございます。 条件を二つにできるのですね。発展させる手がかりがつかめました。 ありがとうございました!

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.1

こんにちは 初めて使ったので不必要なソースがあるかもしれませんが・・・ 並び替えられたので書きますね(^^) 数値はA1からF2の間にあるものとします 並べ替えの順が1回目と2回目が逆になってますけど(滝汗) Sub sort1() Range("A1:F2").Sort _ Key1:=Range("A2"), _ Order1:=xlAscending, _ Header:=xlGuess, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlLeftToRight, _ SortMethod:=xlPinYin, _ DataOption1:=xlSortTextAsNumbers Range("A1:F2").Sort _ Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlGuess, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlLeftToRight, _ SortMethod:=xlPinYin, _ DataOption1:=xlSortTextAsNumbers End Sub 上の部分で2行目を昇順に並び替え、下の部分で1行目を昇順に並び替えてます

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_sort.html
shishsi
質問者

お礼

朝早くから回答ありがとうございます。 ソートの使い方の基礎がわかりました。 素人ながらにVBAで記述してこうとしたら、間違いにつぐ間違いでかなりまいっていたので助かりました! ありがとうございました!