programing

특정 열별 VBA Excel 정렬 범위

oldcodes 2023. 4. 9. 22:22
반응형

특정 열별 VBA Excel 정렬 범위

임의의 수의 행을 포함할 수 있는 테이블이 있습니다.

여기에 이미지 설명 입력

말씀드렸듯이 1행 또는 rows행 중 하나를 포함할 수 있습니다.

범위를 정렬하고 싶다A3:D∞B열에 있는 날짜 셀을 기준으로 합니다.
어떻게 해야 하죠?

문제는 어떻게 골라야 할지 모르겠다는 것이다.A3마지막 줄까지.

마지막 줄에 루프하는 것은 올바른 방법이 아니라고 생각합니다.

지금까지 알아낸 건 맞는 것 같은데 범위가 하드코드 되어 있어요
레인지의 하드코딩을 해제하려면 어떻게 해야 합니까?

Range("A3:D8").Sort key1:=Range("B3:B8"), _
order1:=xlAscending, Header:=xlNo

다음 코드를 사용해 보십시오.

Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _
   order1:=xlAscending, Header:=xlNo

또는 다음과 같습니다.

Range("A2", Range("D" & Rows.Count).End(xlUp).Address).Sort Key1:=[b3], _
    Order1:=xlAscending, Header:=xlYes

임의의 범위를 매우 역동적으로 정렬하려면SortRange그리고.GetCurrentRegionStartingGivenCell다음과 같이 Xatocode에서 기능합니다.

' First you may define a worksheet level named range in cell "A2" and name it as rngData
Sub SortExample()

    Dim rngData         As Range ' Range to sort

    Set rngData = GetCurrentRegionStartingGivenCell(shtData.Range("rngData"))  
    Call SortRange(rngData, True, 2, xlAscending, 3, xlDescending)

End Sub

기사 전문은 이쪽에서 보실 수 있습니다.

범위와 키의 시작 셀이 정적일 경우 솔루션은 매우 단순할 수 있습니다.

Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort key1:=Range("B3", Range("B3").End(xlDown)), _
order1:=xlAscending, Header:=xlNo

언급URL : https://stackoverflow.com/questions/21451458/vba-excel-sort-range-by-specific-column

반응형