移动单元格值并删除行

时间:2019-02-18 08:23:16

标签: vba ms-word copy rows paste

我需要移动一些数据,但是我当前的代码(从vba开始几周,所以请仁慈:))非常慢。

你能给我一些建议吗?

我想从这里...

I want to to from this...

...对此...

...to this...

...然后这个。

...and then this.

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

谢谢!

1 个答案:

答案 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