1. FAQ
  2. 엑셀(Excel)
  3. AfterEffects
  4. Premiere
  5. Photoshop
  6. ETC

이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.

VBA로 정렬하는 법 문의

VBA 조회 수 8728 추천 수 0 2011.07.21 14:03:12

안녕하십니까 

 

매일 오더 접수를 해야하고 정렬을 새로이 해야 합니다.

 

보통 정렬은 3개기준까지 되는 것으로 알고 있습니다.

 

하지만 저는 3개이상의 조건 정렬이 필요하며 하루에 같은 문서 정렬을 수십번 다시 정렬을 해야 합니다.

 

그래서 시트에 정렬이 자동으로 되는 명령단추를 만들어 정렬을 하고 싶습니다.

 

첨부참조

예제파일

 


댓글 '6'

profile

[레벨:30]아별

2011.07.21 23:16:23
*.130.73.75

부르끄님..

엑셀 재미에 푹~ 빠지셨군요.. ㅎㅎ

 

엑셀 2007버전 이상부터는 3가지 조건 이상이 한번에 적용이 가능합니다만..

3가지 제한을 말씀하시는거 보니, 부르끄님은 엑셀 2003을 사용하고 계신 것 같군요..

 

우선.. 첨부파일을 다운 받아 보세요..

다운 받기 : 20110721_VAB정렬 문의_xl2003.xls

 

VBA로 정렬시키는 코드는 아래와 같습니다.

엑셀 2007이상에서는 한번에 3가지 이상의 조건으로 정렬이 가능하지만,

2003이하 버전에서는 뒷부분을 먼저 정렬하고 앞부분의 3가지 조건으로 정렬하면 동일한 결과가 나옵니다.

 

 

도움이 되셨기를..

 

'### 3가지 조건 이상 정렬하기.. by abyul.com @ 2011-07-21  11:04:00 PM
Sub sortOver3key()

    Dim WS As Worksheet: Set WS = ActiveSheet
    Dim rngTarget As Range: Set rngTarget = Range("A:F")
    Dim rngOrder1 As Range: Set rngOrder1 = Range("C2")
    Dim rngOrder2 As Range: Set rngOrder2 = Range("B2")
    Dim rngOrder3 As Range: Set rngOrder3 = Range("E2")
    Dim rngOrder4 As Range: Set rngOrder4 = Range("F2")

 

        '### 3번째 이후 조건으로 먼저 정렬한 다음..
        rngTarget.Sort _
            Key1:=rngOrder4, Order1:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        '### 1,2,3번 조건으로 정렬하면 됩니다.
        rngTarget.Sort _
            Key1:=rngOrder1, Order1:=xlAscending, _
            Key2:=rngOrder2, Order2:=xlAscending, _
            Key3:=rngOrder3, Order3:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal  


End Sub

 

첨부

[레벨:4]부루끄

2011.07.22 07:49:56
*.136.41.5

답변 감사 드립니다.

 

주신 코드를 가지고 공부를 좀 해봐야겠습니다. ^^

profile

[레벨:30]아별

2011.07.22 11:55:36
*.104.126.21

매크로 기록한걸 가지고 나중에 업데이트하기 편하도록 수정한 코드입니다.

VBA는 매크로 기록기로 한번씩 해보면 금방 늘어요.. ^^

 

application > Workbook > Worksheet > Range 와 같은 오브젝트 구조를 이해하셔야 응용이 가능합니다.

 

수고하세요.. ^^

[레벨:4]부루끄

2011.07.23 15:25:39
*.136.41.5

아별님 첨부의 자료에서 열만 중간에 몇개 추가 된 것을 가지고 조금 수정해서 해봤더니 "오류">>디버그 눌러보니

 '### 3번째 이후 조건으로 먼저 정렬한 다음..
        rngTarget.Sort _
            Key1:=rngOrder4, Order1:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
이 부분이 노랑색 음영으로 표시가 됩니다. 고민끝에 도움 요청 드립니다. 제가 수정한 내용은 다음과 같습니다.

수정부분은 dim 변수 선언부분 끝에 셀번호와 열이 좀더 길게 수정했습니다.

'### 3가지 조건 이상 정렬하기.. by abyul.com @ 2011-07-21  11:04:00 PM
Sub sortOver3key()

    Dim WS As Worksheet: Set WS = ActiveSheet
    Dim rngTarget As Range: Set rngTarget = Range("A:g")
    Dim rngOrder1 As Range: Set rngOrder1 = Range("d4")
    Dim rngOrder2 As Range: Set rngOrder2 = Range("g4")
    Dim rngOrder3 As Range: Set rngOrder3 = Range("b4")
    Dim rngOrder4 As Range: Set rngOrder4 = Range("F4")

    '### 3번째 이후 조건으로 먼저 정렬한 다음..
    rngTarget.Sort _
        Key1:=rngOrder4, Order1:=xlAscending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    '### 1,2,3번 조건으로 정렬하면 됩니다.
    rngTarget.Sort _
        Key1:=rngOrder1, Order1:=xlAscending, _
        Key2:=rngOrder2, Order2:=xlAscending, _
        Key3:=rngOrder3, Order3:=xlAscending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal

End Sub

 

profile

[레벨:30]아별

2011.07.25 00:38:28
*.130.73.75

부르끄님~

데이터가 어떻게 되어 있는지 몰라서 답변을 못 드리겠네요..

에러가 나는 엑셀 파일을 올려주세요..

또는 메일로 보내주세요.. abyul@naver.com

코드 자체는 에러가 나지 않네요..

[레벨:4]부루끄

2011.07.25 20:42:08
*.136.41.5

아별님 메일 보내드렸습니다.  .. 오류나는 부분은 안되서 제가 지워 버렸네요.

 

검토 부탁 드립니다.

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 138080
122 VBA 데이터 수집 질문_01 입니다. file [2] [레벨:1]아우릭 2012-03-20 4471
121 엑셀일반 함수 관련 질문 드립니다. file [2] [레벨:3]블루짱이 2012-01-13 4457
120 날짜/시간 수식 답변 너무 감사하구요 재문의 드립니다. file [5] [레벨:0]아민 2012-09-27 4456
119 VBA 셀병합 효과 file [2] [레벨:4]고수가되고파 2012-10-19 4441
118 엑셀일반 메크로 사용법좀 알려주세요 [1] [레벨:1]everytting 2012-08-31 4435
117 엑셀일반 텍스트 나누기 [1] [레벨:5]눈물바다 2012-06-27 4429
116 VBA 개체와 컬렉션 [2] [레벨:4]고수가되고파 2012-09-26 4413
115 도와주세요 엑셀님들ㅠㅠ [1] [레벨:1]언용구 2013-04-03 4410
114 VBA 빠른실행도구모음 외 image [2] [레벨:4]고수가되고파 2012-09-26 4390
113 셀서식(표시형식) 아별님 다시 질문드려요, file [2] [레벨:2]북곰 2012-09-18 4372
112 열숨기기 기능에 대해서 [3] [레벨:3]말키리 2011-07-14 4357
111 엑셀 서식을..안 바뀌게 [1] [레벨:1]ottee 2010-10-04 4351
110 수식 질문 드립니다 (원재료 소요량에 따른 제품 중량 구하기) file [4] [레벨:5]눈물바다 2011-04-11 4333
109 몇 가지 질문입니다~! (회계표시형식, 셀맞춤-세로로 가운데 등) [3] [레벨:2]여우래비 2011-02-16 4327
108 피벗 필드 셀서식에 원본데이터 셀서식 적용이 안됩니다. file [1] [레벨:3]블루짱이 2011-03-30 4325
107 재미난 엑셀 기능구연 가능?? [1] [레벨:6]ryanoh 2010-10-25 4321
106 VLookup 다른시트에 있는 연락처 옮겨오기 file [2] [레벨:1]뚱뚱만만 2012-09-20 4313
105 엑셀일반 안녕하세요 아별님~ [1] [레벨:4]나카타 2012-09-27 4304
104 엑셀2007 자동필터 문의 imagefile [2] [레벨:2]도시남자 2011-06-27 4302
103 엑셀에서 검색방법 [1] [레벨:1]조프로 2011-05-27 4291