Excel VBA - 根据条件删除行

时间:2016-06-06 23:05:09

标签: excel vba excel-vba

我有一份报告,我每天都会把它放在一个非常不合适的格式中。它包含一个基于每个员工姓名组织成非官方表的4列可变行数。 我所拥有的是B列中的员工姓名,前面有2个空行,后面跟着1个空行数据。 我想要完成的是循环数据,识别B列中的单元格<>。空白,删除该单元格下方的整个2行,并删除该单元格上方的整个1行。 以下是我到目前为止的情况。不多: 子测试() Dim currentSht As Worksheet Dim startCell As Range Dim lastRow As Long Dim lastCol As Long 将我调整为整数 设置currentSht = ActiveWorkbook.Sheets(1) 设置startCell = currentSht.Range(“A1”) lastRow = startCell.SpecialCells(xlCellTypeLastCell).Row lastCol = startCell.SpecialCells(xlCellTypeLastCell).Column 对于i = lastRow为1     如果是细胞(i,“B”)。值<> ““ 然后 结束子

2 个答案:

答案 0 :(得分:1)

不对代码进行重大更改,请尝试以下操作:

For i = lastRow To 1 Step - 1
    If Cells(i, "B").Value <> "" Then
    Range(Cells(i, "B").Offset(1), Cells(i, "B").Offset(2)).EntireRow.Delete  'delete two below
    Cells(i, "B").Offset(-1).EntireRow.Delete ' delete one above

您已进入非空白单元格(即Cells(i,"b"))。要引用与您已有单元格相关的范围,请使用OFFSET

因此,按此顺序,您可以从单元格Offset(1)下方的一个单元格中选择一系列单元格,然后为这些单元格选择Offset(2)'. Change this range to ENTIREROW`下方的两个单元格,然后删除。

然后选择Offset(-1)上方的单元格,选择ENTIREROW并删除。

答案 1 :(得分:0)

根据您的问题叙述,您可能需要删除列中有空白单元格的所有行&#34; B&#34;

这应该是问题所在(免责声明:在抄板上进行测试!)只需如下所示:

Sub test()    
    With ActiveWorkbook.Sheets(1)
        .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).Offset(, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
End Sub