배열을 정렬하는 VBA 명령문 :: SortArray 함수

구문

SortArray ( 배열, [정렬방향] )

설명

엑셀 SortArray 함수는 배열을 오름차순 또는 내림차순으로 정렬하는 함수입니다. SortArray 함수를 사용할 시, 함수의 세번째 인수인 NumericSort 인수 설정을 주의해야 합니다. (기본값: 'True')

예를들어 {1, 3, 2, 11} 의 배열을 각 숫자와 텍스트 형식으로 정렬하면 아래와 같습니다.

  1. '숫자 형식'으로 정렬 : {1, 2, 3, 11}   '// NumericSort가 True일 경우 숫자의 크기를 기준으로 정렬됩니다.
  2. '텍스트 형식'으로 정렬 : {1, 11, 2, 3}   '// 숫자만 입력된 배열을 텍스트 형식으로 정렬할 경우 옳지않은 순서로 정렬됩니다.

또한 NumericFileter를 True로 입력하더라도, 배열에 '텍스트'가 포함된 값이 하나라도 있으면 자동으로 False처리가 되니 주의합니다.

  1. '숫자형식'으로 정렬 가능 : {1, 11, 3, 12, 2}  =>  {1, 2, 3, 11, 12}
  2. '텍스트형식'으로 강제 정렬 : {1, 11, 3월, 12, 2}  =>  {1, 11, 12, 2, 3월'// 중간에 텍스트가 포함되어 '숫자형식'으로 정렬 불가능
인수 설명
인수데이터형식설명기본값
vaArrVariant정렬할 배열입니다.
SortOrderxlSortOrder정렬방향입니다. (오름차순 또는 내림차순)xlAscending (오름차순)
NumericSortBooleanTrue일경우 숫자형식(크기)으로 정렬합니다. 단 배열에 텍스트값이 하나라도 있을경우 강제 False 처리 됩니다.True
예제파일 다운로드

공식설명파일구분마지막수정일파일형식파일다운로드
34663[VBA예제] Multi_AutoFilter :: 엑셀 다중필터추가기능2020-01-22XLAM엑셀 VBA 명령문(UDF) 예제파일다운로드
34310[VBA예제] CreateTOC :: 목차 만들기 자동화예제파일2020-01-22XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
34307[VBA예제] CreateTOC :: 목차 만들기 자동화추가기능2020-01-22XLAM엑셀 VBA 명령문(UDF) 예제파일다운로드
34233[엑셀VBA함수] ImageLookup :: 실시간 이미지 불러오기 함수추가기능2020-01-07XLAM엑셀 UDF 시트함수 파일다운로드
34230[엑셀VBA함수] ImageLookup :: 실시간 이미지 불러오기 함수예제파일2020-01-07XLSM엑셀 UDF 시트함수 파일다운로드
34155[VBA예제] SortArray 명령문예제파일2020-01-05XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33847[VBA예제] MeasureRange 명령문예제파일2020-01-05XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33694[VBA예제] cvRng 명령문예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33682[VBA예제] vbFileSearch 명령문예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33659[VBA예제] ListFiles 명령문예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33643[VBA예제] IsInArray 명령문예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33620[VBA예제] SplitFileExt 명령문예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33596[VBA예제] ArrayDimensnion 명령문예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33027[VBA예제] Send_Email 메일 보내기 명령문예제파일2019-12-09XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
33009[VBA예제] 줄바꿈 문제 해결 (엑셀 팁)예제파일2019-11-24XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
32057[VBA예제] Page_Setup :: 인쇄 페이지 레이아웃 설정예제파일2019-12-10XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
32029[엑셀VBA함수] DecodeURL :: URL 주소 한글/영문값으로 디코딩 반환예제파일2019-11-21XLSM엑셀 UDF 시트함수 파일다운로드
32009[엑셀VBA함수] EncodeURL :: 한글/영문 URL 주소 인코딩 변환예제파일2019-11-21XLSM엑셀 UDF 시트함수 파일다운로드
31425[VBA예제] ValidFileName :: 파일이름 사용가능여부 확인예제파일2019-12-10XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
31397[VBA예제] FileSequence :: 파일이름 순번으로 저장하기예제파일2019-12-10XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
31378[엑셀VBA함수] GetDesktopPath :: 사용자 바탕화면 경로 반환예제파일2019-12-10XLSM엑셀 UDF 시트함수 파일다운로드
31360[VBA예제] FileExists :: 선택경로 파일존재여부 확인예제파일2019-12-15XLSM엑셀 VBA 명령문(UDF) 예제파일다운로드
30522[VBA예제] isListBoxSelected :: 리스트박스 값선택여부 확인예제파일2019-12-10ZIP엑셀 VBA 명령문(UDF) 예제파일다운로드
SortArray 함수 전체 코드

명령문 동작원리 단계별 알아보기

SortArray 함수는 배열의 '첫번째' 값을 시작으로 해당 값을 '고정'한 뒤, 이후 값들을 하나씩 비교하여 오름차순 또는 내림차순으로 정렬합니다.

즉, 첫번째 값을 고정한 채로 첫번째 싸이클을 돌게되면 해당 값은 '최소값' 또는 '최대값'이 놓이게 됩니다. 쉬운 이해를 위해 {5, 1, 7, 9, 3} 배열을 오름차순으로 정렬하는 것을 예제로 알아보겠습니다.

  1. 첫번째 값을 고정합니다. 두번째 값부터 하나씩 비교하여 가장 작은값이 첫번째로 오도록 정렬합니다.
    = {5, 1, 7, 9, 3}   '// 첫번째 값을 고정한 뒤, 두번째 값부터 하나씩 비교합니다. 1이 5보다 작으므로 1을 앞으로 보냅니다.
    = {1, 5, 7, 9, 3}
    = {1, 5, 7, 9, 3}  '// 1을 앞으로 보낸 뒤, 이제 세번째값과 비교합니다. 1이 7보다 작으므로 넘어갑니다.
    = {1, 5, 7, 9 3} .. '// 첫번째값과 네번째값을 비교합니다.
    1 배열 정렬 첫번째값 고정

    첫번째 값을 고정한 뒤, 두번째 값부터 하나씩 비교하여 정렬합니다.

  2. 첫번째 값이 확정됩니다. 이제 두번째 값을 고정한 뒤, 이후 값을 하나씩 비교합니다.
    ={1, 5, 7, 9, 3}  '// 두번째값과 세번째값을 비교합니다. 5가 7보다 작으므로 넘어갑니다.
    ={1, 5, 7, 9, 3}
    ={1, 3, 7, 9, 5} '// 뒤에 있는 3이 5보다 작으므로 3을 앞으로 이동합니다.
    2 첫번째값 확정한 뒤 두번째값 배열 정렬

    첫번째 값이 확정되었으면, 두번째 값을 고정한 뒤 같은 작업을 반복합니다.

  3. 이제 첫번째와 두번째값이 확정되었습니다. 세번째 값을 고정한 뒤 같은 작업을 반복합니다.
    3 세번째부터 배열 정렬

    세번째 값을 고정한 뒤 같은 작업을 반복합니다.

  4. 오름차순으로 정렬된 배열이 반환됩니다.
    = {1, 3, 5, 7, 9}

링크] MS 홈페이지 VBA 배열 사용법 상세설명 페이지 (영문)

댓글 남기기

avatar
  현재 페이지 댓글알림 신청  
알림 설정