방금 며칠 전에 이와 비슷한 질문에 답했습니다.
Here is the link이 예제에서는 배열을 기반으로했습니다. 이 값을 약간 수정하여 결과를 얻을 수 있습니다.
- 예, 검사 할 목록의 마지막 행을 결정해야합니다. - GetLastRow (아래 참조)
- vLoopup은 일치 또는 일치하는 인덱스만큼 효율적이지 않습니다. worksheetFunction.Match를 사용하여 첫 번째 발생으로 건너 뛰거나 일치하는 항목이 있는지 확인할 수도 있습니다.
단계 고려해야 할
는 검토하고 목록의 마지막 행을 결정합니다. - GetLastRow
이
두 번째 목록의 마지막 행을 결정 각 항목에 대한 두 번째 시트 각 항목에 대한 루프를 수행
는 원래 목록의 배열을 생성합니다 (아래 참조) 처음에는. - Loop 내에서 Loop를 수행하면 WorksheetFunction을 사용하여 얼마나 많은 시간을 절약 할 수 있습니까? 은 Match 또는 무언가를 사용하려고 할 수 있습니다. 그냥 백그라운드에서 작업을 수행합니다. 하지만 여전히 작업을하고 있습니다 및 코드 작업을 수행 할 수있는 비슷한 작업. 는 한 번에 더 큰 크기 하나 의 설정 배열에 대한 ReDim을 사용 -
- 는 타의 추종을 불허하는 항목 배열을 만듭니다.
일치하지 않는 항목을 원본 시트에 추가하십시오. (아래 참조)
대부분이 동일한 내용입니다. 한 번에 하나씩 셀을 순환하여 배열에 항목을 추가합니다. 하나의 값 = 다른 값인지 확인. 그렇다면 match = true .. 그런 종류의 일. 다른 예를 보려면 링크를보십시오.
이렇게하려면 .Range 대신 .Cells를 사용하십시오. .Cells (행 #, Col #) 형식은 루핑에 적합합니다. Row # 또는 column #에 대한 변수를 가지고 루프를 증가 시키십시오. 그것은 시트에서 DOWN 화살표를 클릭하는 것과 실질적으로 동일합니다. 문자열로 수식을 정의 할 수도 있습니다.
Dim r As Long ' Or Integer although I've read that Long is more efficient.
r = 4
Sheets("Sheet1").Cells(r, 3) = "Hello There C4!"
'Result = Sheet1!C4 = Hello There C4
예 :이 원래 목록에 타의 추종을 불허하는 항목을 추가 실행하는 어떤 것이다. 이미 존재하지 않는 것들만 추가하고 싶을뿐입니다.
Private Sub AddToSheet()
Call GetLastRow
r = lastRow + 1
i = 0
For i = 0 To n
Sheets("Sheet1").Cells(r, 1) = unMatchedArray(i)
r = r + 1
Next i
End Sub
Private Sub GetLastRow()
' checking Range("A1:A65536")
lastRow = Sheets("Sheet1").Cells(65536, 1).End(xlUp).Row
End Sub
현재 귀하의 질문은 매우 모호합니다. 지금까지 시도한 코드와 함께 샘플 데이터를 제공하면 도움이 될 것입니다. 또한, 이것은 피벗 테이블 (Pivot Table)이 할 수있는 것처럼 들립니다. 먼저 피벗 테이블이 필요한 것을 성취 할 수 없다면 먼저 살펴보고 VBA를 시도해보십시오. – BobbitWormJoe