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

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

VBA로 정렬하는 법 문의

VBA 조회 수 6501 추천 수 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 60742
33 VBA 수식이 입력된 셀은 자동으로 색상이 들어가게 하는 방법 [5] [레벨:4]부루끄 2011-07-15 4901
32 VBA 외부 어플리케이션 실행 & 유저폼 일괄 닫기 & 리본 메뉴 사용자 추가 탭 숨기거나 보이게 하는 방법 [7] [레벨:3]엑셀대단해 2012-02-08 4971
31 VBA 2개의 시트를 비교하여 다른 부분을 찾아내는 프로시저 질문입니다! file [3] [레벨:6]파이스 2011-11-24 5097
30 VBA 엑셀 vba 함수 질문드릴게요. [4] [레벨:4]신강현 2013-03-04 5140
29 VBA 엑셀 메모의 배경으로 삽입한 이미지 추출하기 file [레벨:2]이런젬젬 2015-01-06 5143
28 VBA win7 64bit / 64bit 엑셀 / 32bit DLL의 사용법이 궁금합니다. file [레벨:1]컴바치 2013-01-04 5284
27 VBA 엑셀 내용에서 영어만 모두 제거할 수 있을까요?? [1] [레벨:1]초보배움 2015-02-20 5421
26 VBA 파일&폴더 ExecuteExcel4Macro로 다른 파일 열지않고 셀 데이터 가져오기 시 실패 file [레벨:1]소주보이 2014-02-28 5523
25 VBA 엑셀 랜덤돌리기 질문입니다 file [2] [레벨:4]신강현 2012-12-07 5600
24 VBA 특정값이 변경될 경우 매크로실행 또는 0이 아닐경우 실행 [2] [레벨:3]jmsynn 2014-10-24 5696
23 VBA 특정색 행 삭제 메크로 배워보고 싶습니다~ imagefile [2] [레벨:1]굿한넘 2015-01-12 6224
22 VBA 병합효과 file [3] [레벨:4]고수가되고파 2012-11-22 6329
21 VBA 한셀안의 서식을 다르게 지정할 수 있는 방법 없을까요? file [5] [레벨:4]부루끄 2011-09-28 6466
» VBA VBA로 정렬하는 법 문의 file [6] [레벨:4]부루끄 2011-07-21 6501
19 VBA 프로그램바 질문 _ 작업 진행바 Progress bar file [2] [레벨:4]신강현 2013-01-30 6531
18 VBA 하이퍼링크셀 선택시 셀값을 오토필터 값으로 연결 file [레벨:1]speena 2015-03-11 6642
17 VBA 조건문을 변수화 하는 방법 [2] [레벨:3]엑셀대단해 2012-07-23 7009
16 VBA 랜덤 출력 관련 짧고 간결(?)한 3가지 질문입니다. _ 중복 없는 랜덤 패스워드 생성하는 방법.. [4] [레벨:6]파이스 2011-11-29 7017
15 VBA vba질문하나 올리겟습니다.ㅠㅠ file [3] [레벨:1]gg남자 2013-03-27 7237
14 VBA 특정개체 수정 관련 [5] [레벨:4]고수가되고파 2015-04-02 7427