• ベストアンサー

EXCEL VBAでのソートについて

Excel VBAでデータの並び替えをしようと思っています。 キーが3つまでならうまくいくのですが、4つ目のキーを同じように指定すると、「アプリケーション定義またはオブジェクト定義のエラーです」とメッセージが出てしまいます。 一度にできるソートのキーは3つまでしかだめなのでしょうか? 以下、ソースです。 Selection.Sort Key1:=Range("A2") _ , Key2:=Range("B2") _ , Key3:=Range("C2") _ , Key4:=Range("D2") _ , Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin Key4の記述をしなければうまくいきます。 どうぞご指導をよろしくお願いします。

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

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

ヘルプを見ましたが、明確に「3つまで」という制限の記述は発見できませんでしたが、 Key1からKey3まで、個別に引数の説明があるところを見ると、やはり4つは出来ないのでしょうね。。。 AからDを連結したE列をソート用に設け、E列でソートしましょう。 頑張ってくださいヽ(^。^)ノ

ken0117_2004
質問者

お礼

なるほど!AからDを連結させればよいですね! 気がつきませんでした…^_^; ありがとうございます。

その他の回答 (1)

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

エクセルでソートは(操作で)3キーまでは有名なことです。 それをVBAが踏襲しているとしても、不思議ではありません。 ソートキーがA、B、C(列)の他にD、E(列)がある時、まずC、D、Eの順にソートし、その後A、B、Cでソートしてみて下さい。(後順位を先に指定してソートします) 小数例では確認できましたが、多数のデータ数で、それにふさわしいテストデータが作りにくいので。今までエクセルを使った実務で4キー以上は経験したのは昔のことで、記憶がぼやけてます。大型コンピュタなどのソートマージユティリティでは、キー数は3つなどと言うような、少数ではありません。 このようにそのソフトがソートに使っている、プログラムロジック(例えばクイックソートやマージソートなど)により、以前のソートの順が保存されるものと、崩れてしまうものがあります。 私が言っているのは、エクセルでは保存されると言うことです。 但しいつもデータ全列を範囲指定・カバーしてソートしてください。 また1つの列C列を第1回目と第2回目とキーの組みとしてだぶらせましたが、ダブらせなくてもよいかも知れない。

ken0117_2004
質問者

お礼

EXCELの並び替えでは3つまでですが、まさかVBAではそんなに少なくないだろう?!と思っていたんですよね…。 丁寧な回答、ありがとうございます。

関連するQ&A