我需要移动一些数据,但是我当前的代码(从vba开始几周,所以请仁慈:))非常慢。
你能给我一些建议吗?
我想从这里...
...对此...
...然后这个。
Do While Not Listado.Cells(rowquery, colquery) = ""
Listado.Cells(rowquery, colquery).Offset(0, 2) = Listado.Cells(rowquery, colquery).Offset(1, 1)
Listado.Cells(rowquery, colquery).Offset(0, 3) = Listado.Cells(rowquery, colquery).Offset(2, 1)
Listado.Cells(rowquery, colquery).Offset(1, 1).Clear
Listado.Cells(rowquery, colquery).Offset(2, 1).Clear
rowquery = rowquery + 3
Loop
谢谢!
答案 0 :(得分:0)
速度很慢,因为您一直在访问工作表。甚至可能有一些公式引用正在移动和清除的单元格。
在变量数组中工作,并将数据转储到workshet中,然后删除第一列中的重复项。
dim i as long, arr as variant
arr = Listado.databodyrange.value2
for i=lbound(arr, 1) to ubound(arr, 1) step 3
arr(i, 3) = arr(i+1, 2)
arr(i, 4) = arr(i+2, 2)
arr(i+1, 2) = vbnullstring
arr(i+2, 2) = vbnullstring
next i
Listado.databodyrange = arr