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

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

VBA로 정렬하는 법 문의

VBA 조회 수 6063 추천 수 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 42234

속도가 자꾸 느려집니다. 해결방법이 있을까여?? [2]

  • [레벨:6]ryanoh
  • 2010-10-18
  • 조회 수 5724

VLookup Vlookup 사용 시 수식이 걸려 있는 데이터의 #N/A 표시 해결 [1]

[문의드릴께요]엑셀 창끼리 alt+tab으로 전환이 안됩니다. file [1]

2007에서 그래프 사용시 [2]

엑셀 차트 관련 질문인데요.. imagefile [1]

  • 홍승
  • 2009-08-24
  • 조회 수 5804

재고관리에 대해 아별님께 도움을 구합니다, file [1]

도형색깔을 시간에 따라 자동으로 변화게 하는법 file [3]

  • [레벨:6]ryanoh
  • 2010-04-05
  • 조회 수 5831

엑셀에서 구름마크 [2]

  • [레벨:1]daincs
  • 2011-01-12
  • 조회 수 5855

엑셀 웹 쿼리 질문드립니다. [6]

  • [레벨:1]페니
  • 2009-12-16
  • 조회 수 5889

동일한 셀 내용을 찾아서 개수를 세주는 방법이... file [3]

  • [레벨:4]쟈니
  • 2010-03-05
  • 조회 수 5903

이미지,도형 등 이미지 밀림 현상... [2]

  • [레벨:2]dizzy
  • 2013-03-10
  • 조회 수 5919

'근무일수를 소수점 월단위표기' 관련 질문 두번째 입니다~^^ [2]

excel vba 질문 드려요. file [1]

다른시트에 조건부 수식 넣어서 합계 내는 법 file [2]

구간값에 있는 data 갯수 구하는 법 (countif) [3]

엑셀 차트(표식이 있는 꺾은선형)에서 특정 data 에 색깔 표시 [5]

  • [레벨:1]Mike
  • 2009-07-09
  • 조회 수 6003

VBA 병합효과 file [3]

ISERROR 건 입니다. [4]

작업 완료일 구하는 함수 중 일요일만 제외할 수 있나요? [2]

  • [레벨:1]rusl1
  • 2009-08-23
  • 조회 수 6015

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