シートの並び替えをする
以前の記事「 配列をソートする 」の続きで
2次元配列をソートする方法を考えていたのですが、
その前にシートの「並び替え」についてVBAで実行する方法についてのまとめ。
「並び替え」を手動で実行するには
並び替えたい範囲を選択してから
[データ]-[並び替え]を選択します。
そうすると下の画像のようなダイアログが出るので
各条件を指定して実行します。
Excel2000はキーが3つまでしか指定できませんが
Excel2007はもっとキーが増えているようです。
ここではExcel2000の場合です。
下の画像は、
ある時点の価格.comのノートパソコンランキングの
TOP10の情報をシートに入れたものです。
これを使って「並び替え」をします。
今は順位(A列昇順)で並んでいます。
第一優先を最安価格(C列)、昇順
第二優先を液晶(D列)、降順
で「並び替え」ます。
これは液晶、降順で並び替えてから、
最安価格、昇順で並び替えたものと同じです。
もし最安価格が同じなら
液晶サイズが大きいほうが上になります。
並び替えるとこのようになります。
同じことをVBAで実行するコードは次のようになります。
Range("A2:G11").Sort _
Key1:=Range("C2"), Order1:=xlAscending, _
Key2:=Range("D2"), Order2:=xlDescending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
Range、Key、Orderのところだけ変更すれば
大体の「並び替え」はできそうです。
各引数の詳細はVBAヘルプにあります。
最後にキーを3つ使った「並び替え」のVBAコードの
テンプレートを作っておきます。
'ヘッダーを含まない範囲の並び替え |
最初のRangeに
ヘッダーを含まない並び替える範囲を入れます。
3つKeyのRangeには
それぞれ列の並び替える範囲内の一番上のセルを入れます。
あとは3つKeyのOrderを
xlAscending か xlDescendingのどちらかにすればOKです。
Key2、Key3は不要ならその行を削除してください。
変更する箇所はこの画像を参考にしてください。
| 固定リンク
この記事へのコメントは終了しました。

コメント