私は、1枚の欄( "すべて")の欄にファンド名を、他の欄( "EDITED")の対応する欄にファンド名を返します。私はファンドの名前と範囲を範囲として定義し、VBAのキーとしてリターンを使って名前をソートしようとしました。私の目的は、各列が別の週を表すので、すべての列を並べ替えることです。私のコードは下にあります。前もって感謝します。VBAの基準として他の範囲を使用して可変範囲を並べ替える
Sub Sortmydata()
Dim rng As Range
Dim keyrng As Range
For i = 5 To 385
Set rng = Worksheets("All").Range(Cells(3, i), Cells(385, i))
Set keyrng = Worksheets("EDITED").Range(Cells(3, i), Cells(385, i))
rng.Select
Selection.Sort key1:=keyrng, _
order1:=xlAscending, Header:=xlNo
i = i + 1
Next i
End Sub
私はまだ私の主な問題は、私が定義した範囲でそれをしました。コードが "keyrng"の範囲に移動すると、エラーが発生します。私は同じワークブックで2つの異なるシートに2つの範囲を設定できると思った。それらのうちの1つをキーとして使用して、他のものを並べ替えることができます。これは可能ですか? – skatip
いいえ、キーはソート範囲にある必要があります あなたがしたいと思うものは、他の列の順番で列をソートすることです。これは「カスタムソート順」です https://stackoverflow.com/questions/ 6100944/code-an-excel-vba-sort-a-custom-order-and-a-value-commonsを含む –
はい、それは私がしたいことです。あなたが送信したリンクをチェックしましたが、わかっていればわかりません(私はそれを私のデータに適用するためにそれを理解する必要があります:))この場合、他の範囲の疑似データを作成するために、ソートされたデータをソートして最初のどこにでもコピーできます。ありがとう。 – skatip