Excel VBA의 특정 열을 기준으로 데이터 범위 정렬

Iqra Hasnain 2024년2월15일
  1. VBA의 특정 열을 기준으로 데이터 범위 정렬
  2. VBA에서 Range.Sort() 메서드를 사용하여 특정 열을 기준으로 데이터 범위 정렬
  3. VBA에서 매크로를 기록하여 특정 열을 기준으로 데이터 범위 정렬
  4. VBA에서 단일 수준 정렬을 사용하여 특정 열을 기준으로 데이터 범위 정렬
  5. VBA에서 다중 수준 정렬을 사용하여 특정 열을 기준으로 데이터 범위 정렬
  6. VBA에서 다른 매개변수를 사용하여 특정 열을 기준으로 데이터 범위 정렬
Excel VBA의 특정 열을 기준으로 데이터 범위 정렬

Excel VBA에서 특정 열을 기준으로 데이터 범위를 정렬하는 다양한 방법을 소개합니다.

VBA의 특정 열을 기준으로 데이터 범위 정렬

Excel에는 리본 및 정렬 대화 상자에서 사용할 수 있는 데이터를 정렬하는 기본 제공 기능이 있습니다. 그러나 코딩에서 데이터 정렬이 필요할 때마다 VBA를 사용하여 데이터를 정렬해야 할 수도 있습니다.

주어진 데이터의 정렬 프로세스를 위한 매크로를 생성하여 많은 시간과 에너지를 절약할 수 있습니다. 매크로를 사용하면 한 번의 클릭으로 전체 프로세스를 수행할 수 있습니다.

데이터 정렬은 여러 기술을 사용하여 수행할 수 있으며 데이터에 적합한 방법을 선택할 수 있습니다. 다음 섹션에서 이러한 방법을 하나씩 설명합니다.

VBA에서 Range.Sort() 메서드를 사용하여 특정 열을 기준으로 데이터 범위 정렬

Range.Sort() 메서드는 VBA에서 데이터를 빠르게 정렬할 수 있습니다. 그러나 VBA를 통해 데이터를 정렬하는 동안 몇 가지 추가 매개 변수를 정의해야 합니다.

이러한 매개변수에는 Key, OrderHeader가 포함됩니다.

  1. - 정렬하려는 열을 지정합니다.
  2. 주문 - 주문 유형 지정: 내림차순 또는 오름차순.
  3. 헤더 - 헤더 데이터가 정렬 프로세스에 포함되는지 여부를 VBA에 알려줍니다.

B1 ~ B13 범위의 코드, B1 열, 오름차순 및 VBA 코드를 사용하는 데이터 헤더가 아래에 표시됩니다.

예:

# VBA
Sub usingRangeSort()
Range("B1:B13").Sort Key1:=Range("B1"), _
    Order1:=xlAscending, _
    Header:=xlYes
End Sub

출력:

![Range.Sort를 사용하여 VBA에서 정렬](</img/VBA/range.sort.gif>를 사용하여 vba에서 정렬

예제에서 볼 수 있듯이 Range.Sort() 메서드를 사용하여 범위를 정렬할 수 있습니다.

VBA에서 매크로를 기록하여 특정 열을 기준으로 데이터 범위 정렬

VBA 정렬을 위한 매크로 기록은 데이터 정렬에 모든 매개변수를 포함해야 하기 때문에 복잡할 수 있지만 코드가 작업을 수행하는 방법을 보여주기 때문에 도움이 될 수 있습니다. Excel 워크시트에 적용된 이 방법은 아래와 같이 보일 수 있습니다.

예:

# vba
Sub savedMacro()
Range("A1:B13").Sort Key1:=Range("A1"), _
    Order1:=xlAscending, _
    Header:=xlYes
End Sub

출력:

저장된 매크로를 사용하여 VBA에서 정렬

이 예에서 볼 수 있듯이 매크로를 저장하고 원할 때마다 다른 시트에서 사용할 수 있습니다. 코드는 여러 Excel 워크시트에 적용되는 복사-붙여넣기 프로세스를 쉽게 거칠 수 있으므로 VBA 코딩을 통해 대량 데이터 프로세스를 가속화할 수 있습니다.

VBA에서 단일 수준 정렬을 사용하여 특정 열을 기준으로 데이터 범위 정렬

이 프로세스는 매개변수를 하나씩 포함할 필요가 없고 기본 매개변수를 독립적으로 사용하기 때문에 매우 쉽습니다. 사용자는 기본적으로 관련된 모든 워크시트의 매개변수를 설정해야 합니다.

방법의 샘플이 아래에 나와 있습니다.

# vba
Sub SortWithSingleLevel()

Worksheets("Sheet1").Sort.SortFields.Clear

Range("A1:B13").Sort Key1:=Range("A1"), Header:=xlYes
End Sub

출력:

VBA의 단일 수준 정렬

위의 예에서 볼 수 있듯이 단일 수준 정렬 범위를 사용하여 시트 데이터를 정렬할 수 있습니다. 이제 다중 수준 정렬에 대해 동일한 작업을 수행하려는 경우를 상상해 봅시다.

VBA에서 다중 수준 정렬을 사용하여 특정 열을 기준으로 데이터 범위 정렬

VBA 코드를 통해 데이터를 정렬하는 동안 둘 이상의 수준을 포함할 수 있습니다.

예를 들어 Key1을 먼저 정렬한 다음 Key2를 정렬하는 코드를 실행하는 경우입니다. Order1Order2의 두 가지 주문을 포함합니다. 즉, Order1Key1과 연결되고 Order2Key2와 연결됩니다.

코드는 아래와 같이 작동합니다.

# vba
Sub SortWithMultiLevel()

Worksheets("Sheet1").Sort.SortFields.Clear

Range("A1:B13").Sort Key1:=Range("A1"), Key2:=Range("B1"), Header:=xlYes, _
Order1:=xlAscending, Order2:=xlDescending

End Sub

출력:

VBA의 다중 수준 정렬

위의 예에서 볼 수 있듯이 여러 키와 순서를 사용하여 다단계 정렬로 범위를 정렬할 수 있습니다.

VBA에서 다른 매개변수를 사용하여 특정 열을 기준으로 데이터 범위 정렬

이제 VBA에서 정렬에 사용할 수 있는 다양한 매개변수에 대해 설명합니다.

VBA에서 SortOn 매개변수로 데이터 정렬

날짜 정렬 프로세스를 수행하려는 매개변수를 정의합니다. 매개변수는 셀 값, 글꼴 색상 또는 셀(배경) 색상일 수 있습니다.

기본 설정은 셀 값이며 아래와 같이 됩니다.

# vba
SortOn:= xlSortOnValues

VBA에서 Order 매개변수로 데이터 정렬

순서는 오름차순 또는 내림차순으로 선택할 수 있습니다(이전 문서에서 설명한 대로). 그러나 기본 설정은 오름차순이며 구문은 다음과 같습니다.

# vba
Order:= xlAscending

VBA에서 DataOption 매개변수를 사용하여 데이터 정렬

이 매개변수는 VBA 코드가 숫자 및 텍스트 데이터를 정렬하는 방법을 정의합니다. 이 매개변수를 사용하여 숫자와 텍스트를 별도로 정렬할 수 있습니다. 사용되는 구문은 아래와 같습니다.

# vba
DataOption:= xlSortNormal

VBA에서 헤더 매개변수로 데이터 정렬

데이터의 헤더를 정렬 프로세스에 포함할지 여부를 설명합니다. 헤더 정렬 구문은 다음과 같습니다.

# vba
Header:= xlYes

헤더가 없고 처음부터 정렬을 시작하려는 경우 아래 코드를 사용할 수 있습니다.

# vba
Header:= xlNo

VBA에서 MatchCase 매개변수로 데이터 정렬

‘MatchCase’ 정렬은 프로세스가 대소문자를 구분하는지 여부를 정의합니다. MatchCase 정렬 구문은 다음과 같습니다.

# vba
MatchCase:= False

VBA에서 Orientation 매개변수로 데이터 정렬

매개변수는 위에서 아래로 또는 열을 통해 정렬 방향을 정의합니다. 기본 구문은 다음과 같습니다.

# vba
Orientation:= xlTopToBottom