2014-05-10 2 views
0

아래 코드는 F 열의 고유 연락처 목록을 가져 와서 직접 실행 창에서 출력합니다.Excel에서 고유 한 값을 사용하는 자동 필터

데이터에 대해 일련의 자동 필터 (예 : for 루프 내, 한 번에 하나씩)를 실행하는 데이 데이터를 어떻게 사용합니까? 각 자동 필터 사이에 데이터가 복사되어 새 스프레드 시트에 저장됩니다.

Sub GetPrimaryContacts() 

Dim Col As New Collection 
Dim itm 
Dim i As Long 
Dim CellVell As Variant 

'Get last row value 
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row 

'Loop between all rows to get unique values 
For i = 3 To LastRow 
    CellVal = Sheets("Master").Range("F" & i).Value 
    On Error Resume Next 
    Col.Add CellVal, Chr(34) & CellVal & Chr(34) 
    On Error GoTo 0 
Next i 

For Each itm In Col 
    Debug.Print itm 
Next 

End Sub 
+0

왜 "일련의 자동 필터를 실행 하시겠습니까?" 사용자는 마지막 자동 필터 작업 결과 만 볼 수 있습니까? – pintxo

+0

@cmmi - 각 자동 필터 사이에 데이터가 복사되어 새 스프레드 시트에 저장됩니다. – theshizy

+0

그래서 각 고유 속성에 대한 행을 별도의 워크 시트에 실제로 복사 하시겠습니까? – pintxo

답변

1

의사 코드, 미안 내가 잠시 동안 VBA를 사용하지 않은 :

dictionary as Dictionary 

for each row in sheet 
    attribute = Cell(A,1) 
    if (attribute not in dictionary) then 
    dictionary.put(attribute, newWorkbook) 
    end if 
    workbook = dictionary.get(attribute) 
    'copy row to workbook 
end for 

이 코드는 매우 첫 번째 유형 변수의 배열에 원본 데이터를 저장하고 또한 저장하여 최적화 할 수 Variable 유형의 배열에있는 다양한 통합 문서의 출력. 루프가 완료되면 실제로 출력 워크 북을 만들고 배열의 내용을 워크 북에 씁니다.

그런 식으로 우리는 고유 한 값을 먼저 찾지 않아도되고 훨씬 더 느리고 유지하기 쉽지 않은 자동 필터를 반복적으로 적용 할 필요가 없습니다.

+0

이 솔루션을 구현하는 방법을 잘 모르겠습니다. 참조 할 방향으로 나를 가리 키시겠습니까? – theshizy

+0

@jmb 자료 : [사전] (http://stackoverflow.com/questions/915317/does-vba-have-dictionary-structure), [성능] (http://blogs.office.com/2009/03/) 12/excel-vba-performance-coding-best-practices /) – pintxo

관련 문제