|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 jaxxcyh 于 2024-8-20 17:48 编辑
- Sub test()
- Dim startTime, endTime, myrow%
- startTime = Timer
- myrow = [a1].End(xlDown).Row
- For i = 1 To myrow '顺序扫描
- If Cells(i, 1) = 0 Then
- For j = i + 1 To myrow '顺序扫描
- If Cells(j, 1) <> 0 Then
- tmp = Cells(j, 1)
- Cells(j, 1) = Cells(i, 1)
- Cells(i, 1) = tmp
- Exit For
- End If
- Next
- End If
- Next
- endTime = Timer
- MsgBox "程序运行时间:" & Format((endTime - startTime) * 1000, "0.000") & "毫秒"
- End Sub
- Sub test2()
- Dim startTime, endTime, myrow%
- startTime = Timer
- myrow = [d1].End(xlDown).Row
- For i = 1 To myrow '顺序扫描
- If Cells(i, 4) = 0 Then
- For j = myrow To i + 1 Step -1 '逆序扫描
- If Cells(j, 4) <> 0 Then
- tmp = Cells(j, 4)
- Cells(j, 4) = Cells(i, 4)
- Cells(i, 4) = tmp
- Exit For
- End If
- Next
- End If
- Next
- endTime = Timer
- MsgBox "程序运行时间:" & Format((endTime - startTime) * 1000, "0.000") & "毫秒"
- End Sub
复制代码 我写了两种解法,第一种双循环是都是顺序扫描,第二种双循环时一个顺序一个逆序,程序运行时间竟然相差极大,不知道什么原因。
我想明白以上两种解法时间相差过大的原因,所以讨论的重点不在于是否使用数组来加快单元格的处理速度。
|
|