通过删除行和列来移动表

时间:2018-04-04 12:06:03

标签: excel vba cells

我有一个填充了随机数字的表格,我想删除表格左边的x列数,x表格底部的行数,并将剩余的值移到左下角。< / p>

Public Sub shiftrandom()
Dim Difference As integer
Difference = 5
Dim i As Integer
For i = 1 To Difference
    Range("B2:B20").Delete Shift:=xlToLeft
    Range("B20:N20").Delete Shift:=xlDown
Next i

End Sub

这里B2:B20是第一列,B20:N20是最后一行。这是一张13x19的桌子。

Range("B2:B20").Delete Shift:=xlToLeft自身工作正常,它会将所有剩余值向右移动正确的列数,但向下移动行会返回

  

越界错误。

感谢。

2 个答案:

答案 0 :(得分:0)

Excel在删除时不会移动DownRight

只有LeftUp可能:

XlShift - 仅用于Range对象。指定如何移动单元格以替换已删除的单元格。可以是以下XlDeleteShiftDirection常量之一:xlShiftToLeftxlShiftUp。如果省略此参数,Microsoft Excel将根据范围的形状决定。

MSDN - Delete Range

enter image description here

答案 1 :(得分:0)

不要循环

Public Sub shiftrandom()
    Dim Difference As Long
    Difference = 5
    With Range("B2:N20")
        .Resize(,Difference).Delete
        .Rows(.Rows.Count - Difference + 1).Resize(Difference).Delete 
    End With
End Sub