2017-01-13 1 views
0

빈 셀/셀에 오류가있는 셀이 맨 아래에 있도록 각 열을 정렬하기 위해 다음 스크립트를 함께 사용했습니다. 문제는 데이터 열 (행 4-1000)의 맨 위에 빈 셀이 하나만있는 경우 (빈 셀은 그대로 두지 만 올바르게 정렬하는 경우) 제대로 정렬하지 않는다는 것입니다. 어떤 도움VBA 스크립트가 일부 셀을 무시합니다.

Sub toTop() 
' 
' toTop Macro 
' 
' Keyboard Shortcut: Option+Cmd+t 
' 
Dim sheetName As String 
Dim column As Integer 

sheetName = ActiveSheet.Name 
column = 1 

Do Until IsEmpty(Cells(3, column)) 
    Range(Cells(4, column), Cells(1000, column)).Select 
    ActiveWorkbook.Worksheets(sheetName).Sort.SortFields. _ 
     Clear 
    ActiveWorkbook.Worksheets(sheetName).Sort.SortFields.Add _ 
     Key:=Range(Cells(4, column), Cells(4, column)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _ 
     :=xlSortNormal 
    With ActiveWorkbook.Worksheets(sheetName).Sort 
     .SetRange Range(Cells(4, column), Cells(1000, column)) 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    column = column + 1 
Loop 
End Sub 

감사합니다,

스콧

편집 : Google Sheet Mock-up of Problem. 게시물 정렬입니다. E4는 여전히 비어 있습니다.

+0

매크로와 함께 사용할 때 문제를 나타내는 데이터를 제공하십시오. 원본 게시물을 편집하여 데이터를 표시하거나 데이터에 대한 링크를 표시하십시오. –

+0

코드가 4 행에서 시작되고 열의 맨 위에서 시작되지 않습니다. 당신이 묻고있는 것이 이것입니까? – Davesexcel

+0

@Davesexcel 죄송합니다. 필자는 열의 꼭대기를 말했지만 행 4에서 시작해야한다는 것을 의미했습니다. 행 1-3은 출력 조정에 사용되는 헤더/드롭 다운 목록입니다. –

답변

0

저번 인사로 인해 답변을하고 의견을 말하지 않아야합니다. 순서는 헤더 여부를 귀하의 첫 번째 행을 사용할지 여부를 결정하는시기를 결정하는 경우 .Header = xlNo

Excel에서 실수를하는 경향이에 .Header = xlGuess : 당신의 VBA에서의이 줄을 변경 시도하십시오 . 제공된 코드는 Excel에서 첫 번째 행을 헤더로 사용하지 않고 정렬 가능한 데이터로 사용하도록합니다.

+0

그게 다야. 제안을 해주셔서 대단히 감사합니다. @Bad_neighbor 나는 당신의 신념을 높이 겠지만, 내 것이 너무 낮아서 당신에게 영향을 줄 수는 없습니다. –

관련 문제