繁体   English   中英

如果单元格值等于“空白”,则删除Excel中多个工作表上的行

[英]Delete rows over multiple worksheets in Excel if cell value equals “blank”

如果单元格值为空白,我想删除多个工作表中的行(仅工作表中的特定行)。 请注意,该行中的其余字段确实包含数据。 到目前为止,我不确定如何指定工作表。 有人可以帮忙吗?

  Sub sbDelete_rows_if_cell_blank()
    Dim lRow As Long
    Dim iCntr As Long
        lRow = 2000
        For iCntr = lRow To 1 Step -1
        If Cells(iCntr, 1).Value = "" Then
            Rows(iCntr).Delete
        End If
    Next
    End Sub 

将您的代码放入此循环中将循环遍历该代码所在的工作簿中的所有工作表,并在每个工作表中运行您的代码。

Sub sbDelete_rows_if_cell_blank()
    Dim lRow As Long
    Dim iCntr As Long
    Dim ws as Worksheet

    For each ws in ThisWorkbook.Worksheets
        ' Find last row in column A
        lRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
        For iCntr = lRow To 1 Step -1
             If ws.name<>"Sheet1" and ws.name <> "Sheet2" then ' change this line to the sheet names you want to leave out. 
             If IsEmpty(ws.Cells(iCntr, 1)) Or Trim(ws.Cells(iCntr, 1).Value) = "" Then
                ws.Rows(iCntr).Delete
            End If
           end if 
        Next iCntr
    Next ws
End Sub

更新了D_Bester关于if条件的建议


更新2:查看评论

这将做我想实现的目标

Sub Combine()
    Dim nws, ws As Worksheet
    Dim rng As Range

    ' Add New Sheet
    On Error Resume Next
    Set nws = ThisWorkbook.Sheets("Combined")
    If nws Is Nothing Then
        With ThisWorkbook.Sheets
            Set nws = .Add(After:=Sheets(.Count))
            nws.Name = "Combined"
        End With
    End If
    On Error GoTo 0

    For Each ws In ThisWorkbook.Sheets
        If Not ws.Name = nws.Name Then
            With ws
                Set rng = Range(.Cells(1, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count))
                rng.Copy Destination:=nws.Cells(nws.Cells(nws.Rows.Count, "A").End(xlUp).Row + 1, 1)
            End With
        End If
    Next ws
End Sub

您可以循环浏览工作表,然后使用特殊单元格删除空白。 Yoi还可以设置循环,以便不删除“ Sheet1”中的空格(在此示例中)

Sub DeleteBlnkRows()
    Dim sh As Worksheet

    For Each sh In Sheets
        If sh.Name <> "Sheet1" Then
            sh.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        End If
    Next sh

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM