2013-07-02 2 views
2

데이터가있는 워크 시트를 채우면 B 열을 기준으로 오름차순으로 데이터를 정렬합니다. 첫 번째 행은 레코드 헤더입니다. B 열은 REPTNO 열입니다.VBA는 Excel 행을 오름차순으로 정렬하지만 첫 번째 행은 제외합니까?

예제 데이터의 경우 B1은 REPTNO이고 B2-B17은 SR0238-SR0253입니다. 모든 것이 좋았지 만 B2-B17을 지우고 테스트를 위해 사용자에게 제출할 때 이상한 일이 일어났습니다.

사용자가 의 값이 JF0007 인 행 2에 레코드를 입력했습니다. 내 코드가 처리 될 때 첫 번째 행과 두 번째 행이 뒤집혀서 (J가 R 앞에옵니다) "헤더"열이 첫 번째 행에 남기지 않고 두 번째 행에있게됩니다.

첫 번째 행을 제외하고 두 번째 행만 정렬하려면 무엇을 변경해야합니까? 내 행 1은 .txt 파일로 출력 할 때 행 1로 남아 있어야합니다.

이 상황에서 rowCnt의 값은 2 (헤더 행 + 입력 1 개 데이터 열이다

EDIT2 :. 그것은 첫 번째 행을 교환하는 것으로 보인다

' Sort by REPTNO field 
    Dim xlSort As XlSortOrder 
    xlSort = xlAscending 

    If rowCnt > 2 Then 
     With Worksheets("Export") 

      .range("B2:B" & rowCnt).Sort Key1:=.range("B2"), Order1:=xlSort, Header:=xlNo, _ 
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
      DataOption1:=xlSortNormal 
     End With 
    End If 

(행 2). 행 3에 두 번째 데이터 레코드를 입력하면 REPTNO = JF0005, REPTNO 값은 B1로 남았습니다. 그러나이 코드는 생각했던 것처럼 작동하지 않습니다.

REPTNO 값을 기준으로 모든 행 (행 2 - 많은 행이 있음)을 정렬해야합니다. 안타깝게도 현재 코드는 REPTNO 열 또는 B의 데이터 만 주문합니다.

+2

'.range ("B2 : B"& rowCnt) .Sort'는 열 B 만 정렬합니다. 포함해야하는 다른 열이 있으면 그 범위를 확장해야합니다. 예 :'.range ("A2 : J"& rowCnt) .Sort' –

+0

데이터에 헤더 행이 있지만'Sort '에 대한 호출에서 당신은'Header : = xlNo' - try'Header : = xlYes' – barrowc

답변

2

분류 할 항목이 없을 때 정렬 오류가 발생하는 것처럼 보입니다. 분명히 셀이 하나 밖에 없기 때문에 정렬 할 항목이없고 건너 뛸 수도 있습니다.

그래서 두 개 이상의 행이 먼저 채워져 있는지 확인하고 그렇지 않은 경우 정렬을 건너 뛰는 것이 좋습니다.

' Sort by REPTNO field 
Dim xlSort As XlSortOrder 
xlSort = xlAscending 

With Worksheets("Export") 
    If .Range("B3") <> "" 
     .range("B2:B" & rowCnt).Sort Key1:=.range("B2"), Order1:=xlSort, Header:=xlNo, _ 
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
     DataOption1:=xlSortNormal 
    End if 
End With 
+0

나는 2보다 큰 행의 총 수를 확인하면서 비슷한 일을했다. 그러나 나는 내 코드가'REPTNO' 또는'B' 열만 정렬하고 전체 행은 정렬하지 않는다는 것에 유의했다. 예를 들어'JF0007' 다음에'JF0005'가 오면 정렬 될 때'JF0005'가'JF0007' 앞에 나오지만 둘은 열의 위치 만 바꿨습니다. 'JF0005'가 끝난 곳은'JF0007'로 입력 된 데이터입니다. 정렬 된 열 값과 관련된 모든 데이터가 새로운 정렬 순서로 이동해야합니다. –

+0

도움 주셔서 감사합니다 mattboy! Tim은 나를 곧게했다. 내 .Sort의 범위를 확장해야합니다. –

관련 문제