gpt4 book ai didi

vba - 删除行循环优化VBA

转载 作者:行者123 更新时间:2023-12-02 23:05:33 26 4
gpt4 key购买 nike

下面的代码是作为随机样本生成器的一部分编写的。根据出现的总数,它计算样本大小并将总体减少到样本大小。现在我通过删除总数和样本量之间的差异来做到这一点。我想看看是否有更好的方法来解决这个问题。我正在获取用户定义列中每个值的样本并处理大型数据集,因此采样最终需要几分钟时间。

有没有办法一次性删除我需要的行数,而不是像下面的循环中那样一次删除一行,或者有更好的方法来完全解决这个问题?谢谢你!

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

最佳答案

您可以构建一个包含多个不连续行的范围,然后一次删除所有行。这可能会加快速度。

x = (Population - SampleSize)

dim MyRange as Range

If Population > SampleSize Then
Do Until x = 0
if MyRange Is Nothing Then
Set MyRange = Workbooks(SourceBook).Sheets(SampleSheet).Columns(StratCol) _
.Find(What:=SubPop, After:=Cells(SampRows, StratCol), LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).EntireRow
Else
Set MyRange = Application.Union(MyRange, Workbooks(SourceBook).Sheets(SampleSheet).Columns(StratCol) _
.Find(What:=SubPop, After:=Cells(SampRows, StratCol), LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).EntireRow)
End If
x = x - 1
Loop
MyRange.Delete
End If

关于vba - 删除行循环优化VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com