2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

« ¥Money(投信生活080405) | トップページ | ¥Money(投信生活080426) »

2008年4月 8日 (火)

◆Excel VBA(Excelのソート指定で3列の限界を超える方法)

久しぶりのExcelVBA(?)ネタです。Excelのソートってキー指定が最大3列までというのはご存知ですね。4列以上でソートしたくても指定できません。当然VBAのSortメソッドもこの制限があります。巷では何回かに分けてソートしなさいというような説明を見かけますが私はこれが理解できませんので試したことがありません。そもそも面倒です。今回は、私が普段使っている、もっと簡単確実でVBAに限らずExcel上でも普通に使用できる方法をご紹介します。
早い話、あるセルに、ソートしたい列順に結合した値を作成しておくというだけの事です。
例えば、下記の例で行くと、E列>C列>A列>B列>D列の順にソートしたいのであれば、F列に=E101 & C101 & A101 & B101 &D101といった式を設定して、F列でソートすればよいのです。
     A B C D E F
101  1 2 3 4 5 =E101 & C101 & A101 & B101 &D101
101  2 3 4 5 6 =E101 & C101 & A101 & B101 &D101
102  3 4 5 6 7 =E102 & C102 & A102 & B102 &D102
103  4 5 6 7 8 =E103 & C103 & A103 & B103 &D103

VBAマクロでは、例えば
For i=100 to 103
Cells(i,6).Value = Cells(i,5).Value & _
                          Cells(i,3).Value & _
                          Cells(i,1).Value & _
                          Cells(i,2).Value & _
                          Cells(i,4).Value
Next

Selection.Sort Key1:=Columns(6), Order1:=xlDescending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin

このようにすれば、ソートキーはいくらでも構わないわけです。お試しあれ。

« ¥Money(投信生活080405) | トップページ | ¥Money(投信生活080426) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ¥Money(投信生活080405) | トップページ | ¥Money(投信生活080426) »