• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAで2列セットでソートする方法)

Excel VBAで2列セットでソートする方法

このQ&Aのポイント
  • Excel VBAを使用して、2列のデータをソートする方法について教えてください。
  • 指定したシートから2列のデータをコピーしてきて、別のシートでB列を使ってソートする方法を教えてください。
  • データの使い勝手を向上させるために、指定した配列のデータを特定の方法で並び替えたいです。どのようなマクロを使えば良いでしょうか?

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

  • ベストアンサー
回答No.1

マクロでなければならないのでしょうか? 単純にソート機能を使う際に、最優先するキーにA、2番目に優先されるキーをBとしてソートすればお望みのソートが 可能ですが。 もし、それをマクロ化したいのであれば、その一連の動作をマクロで記録して、必要に応じていじるだけですぐ出来る と思いますよ。

quindecillion
質問者

お礼

ボタン一つで全てのデータを整理できるようにと思ってやってますので、どうしてもマクロなのです。 「Excel VBA マクロ」という質問条件ですのでそこをご理解ください。 普通に「データ」-「並べ替え」をしても並び変わらずに四苦八苦していたので質問させて頂きました。 既に「Bで並び変えた」状態のデータだった為、「Bで並び変えてAで並び変える」ができなかったのではないかと思われます。 並べ替えの指定順序を「Bの次にA」としていたのから「Aの次にB」と変更すると無事並び替えができ、そのマクロを記録し、内容を確認しました。 その結果、自分が記載していたマクロが 範囲指定 キー1、オーダー1でB並びかえ 範囲指定 キー2、オーダー2でA並びかえ としていたことが並び変えができない原因であると判明致しました。 記載の仕方がおかしかったようです。 お手数をお掛け致しました。

その他の回答 (1)

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

sub macro1()  worksheets("Sheet1").range("A:C").copy destination:=worksheets("Sheet2").range("A1")  worksheets("Sheet2").select  range("A:C").sort key1:=range("A1"), order1:=xlascending, _   key2:=range("B1"), order2:=xlascending, header:=xlno end sub といったカンジでしょうか。

quindecillion
質問者

お礼

ご返事ありがとうございます。 range("A:C").sort key1:=range("A1"), order1:=xlascending, _   key2:=range("B1"), order2:=xlascending ここの部分を range("A:C").sort key1:=range("A1"), order1:=xlascending range("A:C").sort key2:=range("B1"), order2:=xlascending としていたことが間違いでエラーがでていたと判明いたしました。 「ピリオド」を使用し、 range("A:C").sort key1:=range("A1"), order1:=xlascending, _   key2:=range("B1"), order2:=xlascending としたことで無事解決致しました。 お手数をお掛けして申し訳ありません。