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

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

VBA로 정렬하는 법 문의

VBA 조회 수 6110 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 43447

VBA ^^ 또다른 질문입니다. _ 한 시트에서 다른 시트로 데이터를 순차적으로 붙여넣기 file [1]

VBA SUMPRODUCT 질문 !! [1]

VBA 두번째 질문 file [1]

VBA 도와 주세요. file [1]

VBA 매크로.. [1]

VBA 한셀안의 서식을 다르게 지정할 수 있는 방법 없을까요? file [5]

VBA 현재 선택 된 셀을 기준으로 같은방식의 연산결과 값을 산출하는 법 file [1]

VBA VBA로 정렬하는 법 문의 file [6]

VBA 수식이 입력된 셀은 자동으로 색상이 들어가게 하는 방법 [5]

VBA 엑셀 열 추가 _ 엑셀의 마지막 셀 재 인식시키는 팁 ActiveSheet.UsedRange.Select imagefile [1]

VBA .Find 재고 입고월 분석(vba) file [3]

VBA .Find ListBox1 에 추가가 되지를 않습니다. file [3]

VBA .Find 매크로 질문입니다.~ [2]

  • [레벨:1]카멜
  • 2009-07-02
  • 조회 수 6869