excel - 删除除 column1 之外的行元素,然后将单元格向上移动以获取其余部分

标签 excel vba

有没有办法删除除 A 列中的行元素之外的所有行元素,然后使用 VBA 编码仅针对已删除的行向上移动单元格。现在我手动选择除了 A 列中的行元素之外的单行,然后使用 ctrl+- 删除并选择向上移动单元格。

我也试过这个

Worksheets("sheet1").Rows(i).Delete Shift:=xlShiftUp

但它会删除整行。

最佳答案

您将需要指定不包括该列的范围,例如

Worksheets("sheet1").Range("B1:D1").Delete Shift:=xlUp

例如,您还可以指定从 B2 开始,并动态查找同一行中的最后一列:
With Worksheets("Sheet1")
   .Range(.Cells(2, 2), .Cells(2, .Cells(2, .Columns.Count).End(xlToLeft).Column)).Delete Shift:=xlUp
End With

为了使它更容易修改,您可以使用常量,并且您应该测试 lastColumn 大于 START_COLUMN 或者您可以删除保留列。
Const ROW_OF_INTEREST As Long = 2
Const START_COLUMN As Long = 2
Dim lastColumn As Long

With Worksheets("Sheet1")
    lastColumn = .Cells(ROW_OF_INTEREST, .Columns.Count).End(xlToLeft).Column
    If lastColumn > START_COLUMN Then
        .Range(.Cells(ROW_OF_INTEREST, START_COLUMN), .Cells(ROW_OF_INTEREST, .Cells(ROW_OF_INTEREST, .Columns.Count).End(xlToLeft).Column)).Delete Shift:=xlUp
    End If
End With

关于excel - 删除除 column1 之外的行元素,然后将单元格向上移动以获取其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294767/

相关文章:

vba复制不同工作表和单元格中的值

vba - 运行时错误 424 - Range 对象中的文本属性

vb.net - 如何使用 Visual Studio 2010 创建的 Excel 加载项单击在 Excel 中创建的自定义上下文菜单时执行操作

excel - 在 VBA 中检查单元格样式

vba - 交叉引用文档的 VLookup

java - POI 是否提供事件驱动的 API 来读取 XLS 和 XLSX 文件?

excel vba卡住 Pane 而不选择

Excel VBA 模块在运行时未更新

c# - 插入 Excel 工作表后调整图像大小

excel - 如何根据列内容复制excel中的行?