VBA 다중정렬 코드를 찾아보니 3개까지만 키를 지원한다고 되어 있다.
그래서 일단 엑셀이 기본제공하는 다중정렬을 이용하여 정렬을 했는데 매번 찾으려니까 너무 귀찮다.
엑셀 매크로를 이용하여 코드를 기본 생성한 다음에 아래와 같이 수정했다.
E4 는 헤더열 바로 아래 셀이다.
총 4개의 열을 순서대로 정렬하기 위해 사용했다.
매크로로 만들면 실제 Sheet 명이 나오는데 전부 ActiveSheet 로 변경했다.
Sub 부서정렬()
Dim endRow As Long
Dim CurrentPostion
endRow = Cells(Rows.Count, "A").End(3).Row '// 셀을 추가하면 마지막 행의 위치가 계속 변함
CurrentPostion = ActiveCell.Address '// 현재 커서가 있는 셀을 변수에 담는다.
ActiveSheet.AutoFilter.Sort.SortFields.Clear
ActiveSheet.AutoFilter.Sort.SortFields.Add Key:= _
Range("E4:E" & endRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveSheet.AutoFilter.Sort.SortFields.Add Key:= _
Range("F4:F" & endRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveSheet.AutoFilter.Sort.SortFields.Add Key:= _
Range("G4:G" & endRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveSheet.AutoFilter.Sort.SortFields.Add Key:= _
Range("H4:H" & endRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range(CurrentPostion).Select
End Sub
'업무 능력 향상 > 엑셀 VBA 기초' 카테고리의 다른 글
VBA AutoFilters 상시 설정 방법 (0) | 2016.10.13 |
---|---|
VBA Sheet 이름 지정해서 복사 (1) | 2016.08.30 |
VBA 문자열 공백제거 및 서식복사 (0) | 2016.07.18 |
[VBA기초] 셀내 줄바꿈 해제 (0) | 2016.07.16 |
[VBA기초] 중복데이터 제거 및 빈행삭제 (0) | 2016.06.26 |