반응형
엑셀에서는 데이터를 정렬하고 추출할 수 있는 다양한 기능을 제공하고 있습니다. 이전에 소개한 워크시트에서 리본 메뉴를 이용하는 것이 아닌 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
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀(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
▼ 오름차순에서 내림차순으로 바꾸는 것은 간단합니다. IF 조건만 바꿔 주시면 됩니다. 기존 조건을 If rng.Cells(j) > rng.Cells(i) Then 으로 변경하고 함수를 실행합니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기 ▶ 엑셀 Excel 순서 없는 데이터 역순으로 정렬하는 방법 ▶ 엑셀 내림차순 오름차순 정렬하는 방법 ▶ 엑셀 Excel 가나다순, abc, 오름차순, 내림차순 간단하게 정렬하기 ▶ 엑셀 Excel 열 순서 한 번에 순서 변경하기 |
반응형
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 함수 Time 사용해서 현재 시간 표시하기 (0) | 2023.11.28 |
---|---|
엑셀 VBA 함수 Replace 문자열 내 문자 또는 문자열 대체하기 (0) | 2023.11.27 |
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 (1) | 2023.11.26 |
엑셀 VBA 시트 행, 열 선택할 때 Columns, Rows, EntireColumn, EntireRow 사용 (0) | 2023.11.26 |
엑셀 VBA 함수 StrComp 문자열 비교하기 (0) | 2023.11.24 |
엑셀 VBA 함수 Str 숫자를 문자열로 변환하기 (0) | 2023.11.24 |
엑셀 VBA 함수 CDbl 부동 소수점으로 형변환하기 (2) | 2023.11.24 |
엑셀 VBA 함수 CInt 정수로 형변환하기 (2) | 2023.11.24 |