• ベストアンサー

4番目以降の並べ替え

はじめて質問します。 エクセルのマクロで20列40行に数字があるのですが、 この20列を優先順位をつけて並べ替えたいのですが、 4番目以降の優先順位をつけることはできないのでしょうか? 3番目までは問題ないのですが、 Key4:=Range("AA2"), Order4:=xlAscending, Key5:=Range("Z2"), Order5:=xlAscending, _ key4:=のところで「名前付き引数が見つかりません」 となってしまいます。 3つまでしか順位付けできないのでしょうか?

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

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

ソートする列の値を結合したキー列を作成すればできます。

kenji1363
質問者

お礼

ありがとうございます。 おっしゃる通り、CONCATENATEを利用して、全てのセルの値を結合したものを作成して並べ替えたらうまくいきました。 大変参考になりました。

その他の回答 (3)

回答No.4

・Excelブックは保存済みである ・ソート結果は、データとして内部で取得するだけで、シートに反映する必要がない ・シートの一部分だけにソートを行うのではない という条件の下なら、JETドライバ+ADOを利用した方法で、一発でソートも可能です。 取得結果はRecordSetで得ることが可能です。 先に述べた条件に合わなければ、#1のagricapさんが述べておられるように、Excelの仕様をうまく利用し、複数回のソートを行うしかないと思います。

  • agricap
  • ベストアンサー率40% (79/195)
回答No.3

#1です。 おっしゃる通りです。20個でも同様にできます。 エクセル云々の話ではなく、一般的な話です。 理屈で考えてみて下さい。

kenji1363
質問者

お礼

ありがとうございました。 うまくいきました。助かりました。

  • agricap
  • ベストアンサー率40% (79/195)
回答No.1

ヘルプをみましたが、どうも3つまでしかできないようです。 代わりに、 (1)4番目と5番目のキーだけでソートする (2)その結果を、1番目と2番目と3番目のキーでソートする とすれば同じ結果になります。

kenji1363
質問者

補足

ということは、 優先順位1から20まである場合、 (1)18番目、19番目、20番目 (2)15番目、16番目、17番目 (3)12番目、13番目、14番目 (4)9番目、10番目、11番目 (5)6番目、7番目、8番目 (6)3番目、4番目、5番目 (7)1番目、2番目 で7回並べ替えをすればよろしいのでしょうか?

関連するQ&A

専門家に質問してみよう