删除循环,使我的VBAmacros能够运行更多的数据

在我的数据中有超过一千个不同的六位数字,没有特定的模式重现。 我需要find列A中存在的所有六位数字代码和每个数字。 例如123456,然后find列B中的值列A中有123456的每一行的值。我的代码不是很有效,但运行时是不是一个问题,如果我只有10行的运行。 但是,在真实的数据表中有80 000行,我的代码将花费很多时间。 有人可以帮我编辑我的代码,但删除循环内的某些循环或一些停止条件。 我是VBA的新手,不能在有限的时间内自己做。

Sub Test2() Dim summa As Long Dim x As Long Dim condition As Boolean Dim lRows As Long Dim k1 As Integer Dim i As Long x = 1 Worksheets("Sheet1").Activate For i = 100000 To 999999 k1 = 1 lRows = 10 condition = False While k1 <= lRows If Cells(k1, "A").Value = i Then condition = True End If k1 = k1 + 1 Wend If condition = True Then Cells(x, "F").Value = Application.SumIf(Range("A:A"), CStr(i), Range("B:B")) Cells(x, "E").Value = i x = x + 1 End If Next i MsgBox "Done" End Sub 

这个任务你不需要VBA。 按着这些次序。

  1. 在原始数据表的副本中插入一个空白列C.
  2. 在C2中插入一个SUMIF公式,例如=SUMIF(A:A, A2, B:B) ,然后一直向下复制。
  3. 现在所有项目123456在C栏中的总数相同
  4. 复制C列和粘贴值(用它们的值replace公式)。
  5. 删除栏B.
  6. 删除重复项。