2016-10-23 20 views
0

VBAで3つ以上の列を並べ替える必要があります。 key4を追加すると、「名前付き引数が見つかりません」と表示されます。これをどうすれば処理できますか?ここに私のコードはありますか:VBAで3つ以上の列を並べ替える方法は?

Private Sub SubLieutenant_Click() 
Dim LastRow As Long 


LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
Range("F6:F" & LastRow).Formula = "=DateDif(C6, Today(),""y"")+DateDif(E6, Today(), ""d"")/30" 

Range("A6").Sort key1:=Range("F6"), order1:=xlDescending, key2:=Range("E6"), order2:=xlAscending, key3:=Range("D6"), order3:=xlAscending, key4:=Range("C6"), order4:=xlAscending, Header:=xlYes 

End Sub 

答えて

0

あなたの例は、1つのセルをソートするのであまり意味がありませんか?

しかし、本当たとえば、あなただけの
はその後、ソートに言及した行の下に1行に分けて代わりの

With ActiveSheet 
    .Sort.SortFields.Add Key:=Range("F2:F6"), _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    .Sort.SortFields.Add Key:=Range("E2:E6"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    .Sort.SortFields.Add Key:=Range("D2:D6"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    .Sort.SortFields.Add Key:=Range("C2:C6"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
End With 

With ActiveSheet.Sort 
    .SetRange Range("A1:G6") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+0

はこれを処理できません。どうやって? https://drive.google.com/open?id=0BygyhjskixC9OHRfNWVmbjljcVk – tanzilamohita

+1

私は '.SetRange Range(" A1:D6 ")の代わりに' .SetRange Range( "A1:G6") ' – h2so4

1

使用をソートキーを追加最初の実際の範囲を選択します。異なる列でデータを2回ソートします。

Range("A6").Sort key1:=Range("C6"), order1:=xlAscending, Header:=xlYes 

Range("A6").Sort key1:=Range("F6"), order1:=xlDescending, _ 
     key2:=Range("E6"), order2:=xlAscending, _ 
     key3:=Range("D6"), order3:=xlAscending, Header:=xlYes 
関連する問題