2014-11-06 2 views
0

범위가 170000 개입니다. 하나의 값에 대해 열 A를 필터링하고 B 열에 해당 값을 반환합니다.SpecialCells (xlCellTypeVisible) 배열에 모든 값을 반환하지 않음 (Excel 2013)

이러한 값을 배열로 덤프하여 신속하게 사전에 넣을 수 있도록합니다 (키 값은 필터링 됨). 열 A).

SpecialCells(xlCellTypeVisible)이 (가) 일치하지 않는 문제가 있습니다.

작은 범위에서 동일한 테스트를 수행하면 배열에 값이 잘 저장됩니다. 그러나 범위가 광산 인 경우 범위의 첫 번째 값만 반환합니다. 또한 동일한 시트를 사용하여 다른 시트로 복사 할 수 있습니다. 배열을 채울 수 없습니다.

foo = ws1.Range(tbl1Name & "[ID]").SpecialCells(xlCellTypeVisible) 

작은 범위에서 작동하지만, 큰 범위의 첫 번째 결과를 반환 등 광산 (50 개 결과 미만). 푸 모든 변수들을 포함하는 배열된다.

ws1.Range(tbl1Name & "[ID]").SpecialCells(xlCellTypeVisible).Copy ws2.Range("A1") 

넓은 범위에서 작동하고 모든 관련 데이터를 성공적으로 복사합니다.

그럼 내 질문 : 큰 테이블 범위를 자동 필터링 할 때 빈 워크 시트에 복사하는 추가 단계없이 배열을 채우는 방법은 무엇입니까? (Excel 2013)

+0

항상 루프를 시도 할 수 있습니다. –

+0

이전 버전에서는 행 개수 제한을 극복하는 데 루프가 사용되었지만 읽은 모든 내용에 따라 루프를 필요로하지 않아야합니다. – spaceNeenja

답변

0

EDIT : "Microsoft Forms 2.0 Object Library"(사용 가능한 참조 목록 맨 위에 있어야 함)에 대한 참조가 필요합니다.

Sub Tester() 

    Dim rng, txt As String, cb As New DataObject, arr 

    Set rng = ActiveSheet.Range("A2:A28").SpecialCells(xlCellTypeVisible) 

    rng.Copy 
    DoEvents 
    cb.GetFromClipboard 
    txt = cb.GetText 
    arr = Split(txt, vbCrLf) 
    Debug.Print LBound(arr), UBound(arr) 

End Sub 

여러 열을 한 경우 또는

이 하나의 컬럼에 대해 작동합니다 (... 당신은 다음 양식을 제거 할 수 있습니다) 프로젝트에 사용자 정의 폼을 추가하고 그 참조를 자동으로 추가합니다 arr (탭에서 값 나누기)의 각 요소를 반복하고 값을 2 차원 배열로 전송해야합니다.

+0

'code'에 대한 휴식 얻기 Dim cb 새로운 DataObject로서 참조 목록에 Microsoft Forms 2.0 Object Library가 표시되지 않습니다 ... – spaceNeenja

+0

해결 방법은 사용자 정의 폼을 추가하고 참조가 자동으로 추가됩니다. – spaceNeenja

+0

답변으로 표시하는 방법은 무엇입니까? 감사! – spaceNeenja

관련 문제