複数のソートフィールドを使用した並べ替えについては、MSDN pageに行ってきました。基本的には、あなたのキーに番号をつけてソートフィールドと同じに設定するように言います。Excel VBAを使用した動的なネストされたソート
配列の値で範囲をソートするには、Nサイズの整数配列をループします。たとえば、シートに100列のデータがある場合は、列3,18と62に基づいてソートすることができます。そのN 3.問題だろうが、私は1からNまで
ループとして私はソートキー"key" & i
に名前を付けることができないで、私がこれまで持っている何を:あなたは
With Worksheets("SalesRep").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
for i=1 to myArrayLength
SortFields.Add Key:=Range(cells(1,colNumArray(i)).address,cells(lastRow,colNumArray(i)).address)
next i
.Apply
End With
何をお勧めですか?あなたの範囲を参照して.Address
を必要としませんが、ワークシート修飾子を追加する必要があります、または任意の他のシートがアクティブなときにあなたのコードが失敗します
Dim sht As WorkSheet
Set sht = .Worksheets("SalesRep")
With sht.Sort
.SortFields.Clear '<<<<< clear any previous
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
for i=1 to myArrayLength
SortFields.Add Key:=sht.Range(sht.cells(1,colNumArray(i)), _
sht.cells(lastRow,colNumArray(i)))
'maybe cleaner as
'SortFields.Add Key:=sht.Cells(1, colNumArray(i)).Resize(lastRow, 1)
next i
.Apply
End With
:
@TimWilliamsが追加されました。私はいくつかの変数に汎用名を使用しましたが、わかりました。 基本的に、私の配列の各値をループした後、ソートフィールドを適用します。 – wizlog
それを実行するとどうなりますか? –
エラーメッセージは表示されませんが、ソートされません。私は即時ウィンドウを使って適用された並べ替えフィールドを決定する方法を探しましたが、空の手が出てきました。 – wizlog