【发布时间】:2014-04-23 19:17:06
【问题描述】:
第一次发帖,希望能得到一些帮助。 :)
我有一组数据,我试图通过这些数据来计算只有在某些条件匹配时才会出现重复的次数,否则不应该计算在内。我编写了以下内容,它适用于较小的数据集,但是当我尝试使用较大的数据集时,Excel 冻结了。我的猜测是由于嵌套循环和 40k 条目。我意识到 Find 方法会更好地解决这个问题,但无法让它发挥作用。
Sub pileOn()
Dim i As Long
Dim j As Long
Dim k As Long
i = 1
j = 1
k = 0
Do
Do
If ((Worksheets("Data").Cells(i, 21).Value = _
Worksheets("Data").Cells(j, 21).Value) And (i <> j)) Then
If ((Worksheets("Data").Cells(j, 4).Value > _
Worksheets("Data").Cells(i, 4).Value) And _
(Worksheets("Data").Cells(j, 16).Value < _
Worksheets("Data").Cells(i, 16).Value)) Then
k = k + 1
End If
End If
j = j + 1
Loop Until IsEmpty(Worksheets("Data").Cells(j, 21))
i = i + 1
j = 1
Loop Until IsEmpty(Worksheets("Data").Cells(i, 21))
Worksheets("Results").Cells(1, 2).Value = k
End Sub
感谢任何帮助。
【问题讨论】:
-
如果您将整个范围读入一个变体数组并进行处理,而不是访问工作表来读取每个单元格,您的处理将会快得多。
标签: excel vba find nested-loops