|
本帖最后由 moonlit123 于 2019-10-2 12:48 编辑
首先你代码里的 .Select 是没必要的,(录制宏代码的后遗症),改掉这些.Select后会快不少,
其次不断对单元格操作和行操作会影响效率。几万行下来是很卡的。
建议学习下数组,把数据先读取到内存中,利用计算机内存处理 ,处理完再一次性返回到表格上,执行速度快。
- Sub Macro1()
- Dim arr(), i As Long, j As Long, m As Long, R As Long
- R = Sheet1.[A65536].End(xlUp).Row
- arr = Sheet1.Range("A2:D" & R).Value
- ReDim brr(1 To UBound(arr, 1), 1 To UBound(arr, 2))
- m = 0
- For i = 1 To UBound(arr)
- If arr(i, 4) <= 50 Then
- m = m + 1
- For j = 1 To UBound(arr, 2)
- brr(m, j) = arr(i, j)
- Next j
- End If
- Next i
- Sheet1.[A2].Resize(UBound(brr, 1), UBound(brr, 2)).Value = brr
- Erase arr
- Erase brr
- End Sub
复制代码 |
|