Код ниже был записан как часть генератора случайных выборок. Основываясь на общем количестве случаев, он вычисляет размер выборки и уменьшает популяцию до размера выборки. Сейчас я делаю это, удаляя разницу между общим и размером выборки. Я хотел бы посмотреть, есть ли лучший способ обойти это. Я получаю образец каждого значения в определенном пользователем столбце и работаю с большим набором данных, поэтому выборка заканчивается на несколько минут.Delete Row Loop Optimization 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.com/questions/15431801/how-to-delete-multiple-rows-without-a-loop-in-excel-vba) - см. мой ответ для возможного решения. –
@ForrestA. Пожалуйста, обратитесь к аналогичной теме. http://stackoverflow.com/questions/15375054/vba-macro-to-delete-rows-quickly – 2013-03-19 12:03:58
yes, AUtoFilter/Advanced Filter - еще одна опция ** без цикла **, где SpecialCells не требуется использовать –