2012-04-07 2 views
1

값이있는 열만 선택하도록 VBA에서이 행을 어떻게 수정합니까?Excel 매크로 (VBA의 범위 개체)에 값이있는 열 선택

Set rng = Range("A1", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible) 

내가 바로 CountLarge 특성 때문에 일을하고 있다고 생각하지 않는 것입니다 수십억 세포

다음

내 데이터

enter image description here

+2

나는 가정 :) 결과 범위를 복사하여 데이터를 정렬하는 것입니다 WAY 당신은 vbscript가 아닌 Excel에서 실행되는 VBA를 의미합니까? – brettdj

+4

마지막으로 값이있는 셀을 원한다면 xlConstants 및/또는 XlFormulas와 함께 SpecialCells를 사용해야합니다. 현재 코드는 비어 있지 않은 셀이 아닌 보이는 셀을 찾습니다. 데이터가 어떻게 보이는지 보여주는 예가 도움이 될 것입니다. – brettdj

+0

나는 brettdj에 동의한다. 또한 'Intersect'및/또는 End (xlToLeft) – JMax

답변

3
의 샘플입니다

@SiddharthRout 예 데이터가있는 행만 필요합니다. 나는 그것이 @JMax에서 End (xlToLeft)를 사용하여 지금 작업하고 있다고 생각한다. 셀을 반복하면서, 마지막 행에 도달하면 For Each 루프를 종료 할 수있다. 나는 지금이 일을 할 수도있다. - makerofthings7 14 분 전에이를 위해

어느 쪽도 아니 당신은 .SpecialCells 필요하지 않으며 당신이 행을 반복 할 필요가 :

다음

은 샘플 코드 않습니다. 이것은 내가 특정 행의 모든 ​​셀에 데이터가있을 것이라는 점을 가정하고

enter image description here

(시도을 테스트 ) 시트 2에 데이터가 모든 행

Sub Sample() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim LastRow As Long, LastCol As Long 

    Set ws = Sheets("Sheet1") 

    With ws 
     LastRow = .Cells.Find(What:="*", After:=.Range("A1"), Lookat:=xlPart, _ 
     LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row 

     LastCol = .Cells.Find(What:="*", After:=.Range("A1"), Lookat:=xlPart, _ 
     LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _ 
     MatchCase:=False).Column 

     With .Range("A1:" & Split(Cells(, LastCol).Address, "$")(1) & LastRow) 
      .AutoFilter Field:=1, Criteria1:="<>" 
      Set rng = ws.AutoFilter.Range 
      rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _ 
      Destination:=Sheets("Sheet2").Range("A1") 
     End With 
    End With 
End Sub 

스냅 샷을 복사합니다 이 경우는 없을 것입니다.

@ makerofthings7 : 정확히 무엇을하려고하는지 알고 있다고 생각합니다. 원하는 것을 얻기 위해 루프를 사용할 필요가 없습니다. 그냥 빠른 질문입니다. Cell C10이 값을 가질 수는 있지만 B10은 그렇지 않을 수도 있습니까? -이 경우 싯다 르트 나라 얀 패주 12 분 전

는 우리가 따라 자동 필터 기준을 설정해야합니다.

편집 : 2

다른 방법이 방법은 아래 공백을 눌러 다음

HTH가