Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 오름차순, 내림차순 데이터 정렬하기

엑셀(Excel)/VBA
반응형

엑셀에서는 데이터를 정렬하고 추출할 수 있는 다양한 기능을 제공하고 있습니다. 이전에 소개한 워크시트에서 리본 메뉴를 이용하는 것이 아닌 VBA 코드를 이용해서 오름차순, 내림차순으로 데이터를 정렬해 보겠습니다. 이 방법은 일일이 하나씩 읽어서 재정렬하기 때문에 작업할 데이터가 많은 경우 시간이 오래 걸리기 때문에 적합하지 않습니다.

 

먼저 오름차순으로 정렬할 수 있도록 작업할 영역을 선택해야겠죠. B2 셀에서 연속된 데이터 영역을 알아오기 위해 CurrentRegion 속성을 사용하였습니다. 그럼 전체 작업할 영역을 가져 올 수 있습니다. 그리고 가져온 영역을 하나씩 읽어서 순서를 바꾸기 위해 이 중 For 문을 사용하였습니다. 오름차순일 경우 전체 데이터를 읽으면서 자신보다 작은 데이터는 위치를 바꿔야 하기 때문에 이중 For 문을 사용한 것입니다.

Dim rng As Range
 
Set rng = ActiveSheet.Range("B2").CurrentRegion
 
For i = 2 To rng.Count
    For j = i + 1 To rng.Count
       
    Next j
Next i

  

이 중 For 문 안에 들어갈 소스는 다음과 같습니다. 자신보다 작은 값이 발견되면 스왑을 통해서 셀에 있는 데이터를 바꾸는 것입니다. 

If rng.Cells(j) < rng.Cells(i) Then
    '// swap numbers
    temp = rng.Cells(i)
    rng.Cells(i) = rng.Cells(j)
    rng.Cells(j) = temp
End If

엑셀 VBA 오름차순, 내림차순 데이터 정렬하는 방법

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기
셀 Excel 순서 없는 데이터 역순으로 정렬하는 방법
엑셀 내림차순 오름차순 정렬하는 방법
엑셀 Excel 가나다순, abc, 오름차순, 내림차순 간단하게 정렬하기
셀 Excel 순서 번에 순서 변경하기

 

 

아래는 오름차순 정렬을 위한 전체 소스입니다. 함수를 실행하면 데이터는 오름차순으로 정렬이 됩니다. 이중 For 문과 셀에 값을 일일이 변경해 줘야 하기 때문에 데이터가 많을 경우 시간이 좀 걸린다는 것이 아쉽네요.

Dim rng As Range
 
Set rng = ActiveSheet.Range("B2").CurrentRegion
 
For i = 2 To rng.Count
    For j = i + 1 To rng.Count
If rng.Cells(j) < rng.Cells(i) Then
    '// swap numbers
    temp = rng.Cells(i)
    rng.Cells(i) = rng.Cells(j)
    rng.Cells(j) = temp
End If
    Next j
Next i

엑셀 VBA 오름차순, 내림차순 데이터 정렬하는 방법

 

오름차순에서 내림차순으로 바꾸는 것은 간단합니다. IF 조건만 바꿔 주시면 됩니다. 기존 조건을 If rng.Cells(j) > rng.Cells(i) Then 으로 변경하고 함수를 실행합니다

엑셀 VBA 오름차순, 내림차순 데이터 정렬하는 방법

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기
셀 Excel 순서 없는 데이터 역순으로 정렬하는 방법
엑셀 내림차순 오름차순 정렬하는 방법
엑셀 Excel 가나다순, abc, 오름차순, 내림차순 간단하게 정렬하기
셀 Excel 순서 번에 순서 변경하기
반응형
Posted by 녹두장군

댓글을 달아 주세요