2016-08-31 2 views
0

내 스프레드 시트에서 VBA 함수를 실행 한 후 데이터를 자동으로 다시 정렬하여 사용자가 할 필요가 없습니다.VBA에서 텍스트 값으로 정렬

enter image description here

그리고 내 VBA 코드가 현재 : 다음과 같이 I 완료하는 데 노력하고있어 정렬 옵션은

Columns("A:AA").Sort key1:=Range("C1:C1"), order1:=xlAscending, key2:=Range("G1:G1"), order2:=xlAscending, key3:=Range("A1:A1"), order3:=xlAscending, Header:=xlYes 

당신이 볼 수 있듯이, 열 의지 제대로 정렬, 다른 있지만, 2는 Fail, Dismissed, Passed 기준에 따라 정렬하지 않으며 Critical, High, Medium, Low

내가 할 수있는 일이 가능합니까? 누구나 정렬 순서를 지정하는 방법을 알고 있습니까? 매크로 레코더를 사용

+1

참조 : http://stackoverflow.com/questions/36576540/sorting-using-a-custom-order-in-excel-gives-error-1004 –

+2

매크로 레코더를 사용하여 생성 된 코드를 확인 했습니까? 당신은 수동으로 정렬합니까? – YowE3K

+0

Yea Scott, 질문에 대한 대답 : P (필자는 중복 된 것으로 생각하지 않지만) –

답변

2

다음 코드를 알려준 :

With ActiveSheet 
    .Sort.SortFields.Clear 
    .Sort.SortFields.Add Key:=.Range("C:C"), _ 
         SortOn:=xlSortOnValues, _ 
         Order:=xlAscending, _ 
         CustomOrder:="Fail,Dismissed,Passed", _ 
         DataOption:=xlSortNormal 
    .Sort.SortFields.Add Key:=.Range("G:G"), _ 
         SortOn:=xlSortOnValues, _ 
         Order:=xlAscending, _ 
         CustomOrder:="Critical,High,Medium,Low", _ 
         DataOption:=xlSortNormal 
    .Sort.SortFields.Add Key:=.Range("A:A"), _ 
         SortOn:=xlSortOnValues, _ 
         Order:=xlAscending, _ 
         DataOption:=xlSortNormal 
    .Sort.SetRange .Range("A:AA") 
    .Sort.Header = xlYes 
    .Sort.MatchCase = False 
    .Sort.Orientation = xlTopToBottom 
    .Sort.SortMethod = xlPinYin 
    .Sort.Apply 
End With 

는 희망이 당신이 원하는 일을해야한다.