아래 코드는 무작위 샘플 생성기의 일부로 작성되었습니다. 총 발생 횟수를 기반으로 샘플 크기를 계산하고 모집단을 샘플 크기로 줄입니다. 지금은 전체와 표본 크기의 차이를 삭제하여이 작업을 수행합니다. 이 문제를 해결할 더 좋은 방법이 있는지 알고 싶습니다. 사용자 정의 열에서 각 값의 샘플을 얻고 큰 데이터 세트로 작업하므로 샘플링이 몇 분 정도 소요됩니다.행 루프 최적화 VBA 삭제
아래 루프에서 볼 수있는 것처럼 한 번에 하나씩 수행해야하는 대신에 한 번에 모두 필요한 행 수를 삭제하는 방법이 있습니까? 아니면이 모든 것을 수행하는 더 좋은 방법입니까? 고맙습니다!
x = (Population - SampleSize)
If Population > SampleSize Then
Do Until x = 0
Workbooks(SourceBook).Sheets(SampleSheet).Columns(StratCol) _
.Find(What:=SubPop, After:=Cells(SampRows, StratCol), LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).EntireRow.Delete
x = x - 1
Loop
End If
예, [Excel VBA에서 루프를 사용하지 않고 여러 행을 삭제하는 방법]과 같은 수식 열만 추가하면됩니다 (http : // stackoverflow.질문에 대답/15431801/삭제 방법 - 여러 - 행없이 - 루프 -에 - 엑셀 - VBA) - 가능한 해결책에 대한 내 대답을 참조하십시오. –
@ForrestA 친절하게도 비슷한 스레드를 참조하십시오. http://stackoverflow.com/questions/15375054/vba-macro-to-deleterows-quickly –
예, AUtoFilter/Advanced Filter는 루프가없는 ** ** SpecialCells를 사용할 필요가없는 다른 옵션입니다 ** –