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

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

VBA로 정렬하는 법 문의

VBA 조회 수 8700 추천 수 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 137373
542 피벗테이블 엑셀 백분율 계산 등등~ file [3] [레벨:1]zzziniya 2011-09-23 6928
541 엑셀일반 특정 문자를 포함하는 셀을 하이라이트 하는 법 file [3] [레벨:4]pgpoch 2012-02-22 6925
540 엑셀일반 엑셀 파일들끼리 연결(??), 호환 이 안돼는거 같습니다. ㅜㅜ imagefile [2] [레벨:3]월전천넘 2012-07-04 6924
539 기타 미리보기도 1페이지인데, 똑같은 내용의 페이지가 2장씩 인쇄 file [6] [레벨:4]성투은자 2013-02-28 6924
538 VBA 엑셀 vba 함수 질문드릴게요. [4] [레벨:4]신강현 2013-03-04 6922
537 엑셀일반 주소 텍스트 나누기 [3] [레벨:1]퀀텀00 2013-06-11 6916
536 아별툴 중..엑셀 테두리.. [1] [레벨:1]이라이 2009-08-22 6898
535 엑셀수식 엑셀 데이터 선택을 통한 차트 자동 업데이트 file [1] [레벨:1]swanage 2012-12-31 6897
534 엑셀일반 엑셀 질문 몇가지 드립니다. file [1] [레벨:1]나도그래짱 2013-02-03 6890
533 VBA .Find find 문을 공부하던도중 문제하가잇어서 질문올립니다. file [2] [레벨:4]신강현 2013-03-22 6881
532 엑셀수식 엑셀 수식 질문드려요~ _ 여러 행 단위로 정렬하기, 사용자 지정 목록으로 정렬하기.. file [2] [레벨:4]요셉 2014-02-13 6862
531 엑셀일반 사진에있는 GPS메타정보추출 file [3] [레벨:1]얼씨구 2012-02-24 6848
530 엑셀일반 값더하기 단축기는 없나요? [4] [레벨:1]azess 2013-12-12 6842
529 if 에서 and, or , not 함수에 대해서 문의여..? 다시파일 올렸어여..부탁드려여..? [2] [레벨:2]편한세상 2009-09-01 6829
528 엑셀일반 엑셀 작업한 내용이 안보여요. file [5] [레벨:2]시나브로 2012-06-20 6819
527 엑셀에서 뒤에 있는 숫자로 정렬하는 방법좀..ㅠㅠ [1] ㄱㄱㄱ 2009-07-21 6819
526 엑셀일반 자동채우기 기능(급합니다...ㅠㅠ) file [2] [레벨:1]hydon 2014-02-14 6806
525 VLookup 하 ~.~ vlookup 이여 _ VLOOKUP과 MATCH 활용하여 값 불러오기 file [11] [레벨:3]빛의행운아 2012-02-28 6805
524 엑셀일반 혹시 이런것도 가능한가요? (간결한 2가지 질문) - VBA만 실행파일(.exe)로 만들 수 있는지 여부, 외부 파일명 일괄 변경 방법.. [2] [레벨:6]파이스 2011-12-02 6797
523 VBA 파일&폴더 엑셀파일명으로 검색하여 링크걸기 file [1] [레벨:2]광택입니다 2012-09-29 6791