簡體   English   中英

如何使用列值刪除基於Excel工作表的行

[英]How to delete the rows based in excel sheet using column values

我有5張不同的表格。 sheet3和sheet4我想要根據單列單元格值刪除行。 在表3中,我想基於H列單元格值刪除行,如果H2 =“#N / A”並且H503 =“#N / A”則刪除整行。 在表4中我想基於b列單元格值刪除行,如果B2 =“320857876”,B3 =“32085678”,B4 =“12133435”則刪除B列單元格值以302開頭的整行。我想要刪除“C”列中的所有數據我的excel表格是這樣的

使用excel文件

Sub Create()
  Dim LastRow As Long
  Dim i As Long

  LastRow = Range("B10000").End(xlUp).Row
  For i = LastRow To 1 Step -1
    If Range("B" & i) = "#N/A" Then
        Range("B" & i).EntireRow.Delete
    End If
  Next
End Sub

你有一些要求,你的代碼相當輕,但是關於它的#N/A部分,你不能只使用值方法測試該文本,這是為范圍對象返回的默認屬性。

Sub Create()
    Dim LastRow As Long, i As Long

    LastRow = Range("B10000").End(xlUp).Row

    For i = LastRow To 1 Step -1
        If Range("B" & i).Text = "#N/A" Then
            Range("B" & i).EntireRow.Delete
        End If
    Next
End Sub

...你需要使用.Text來實現它,或者, If IsError(Range("B" & i)) Then另一種方法。

其余的要求只是邏輯。 您的其余代碼相對完善,因此您只需要完成它。

我希望有所幫助。

Sub delete_rows()

    Dim sheet As Worksheet, cell As Range

    Count = 1
    For Each sheet In ThisWorkbook.Worksheets
        If Count = 3 Then
            lastrow = sheet.Cells(sheet.Rows.Count, "H").End(xlUp).Row
            Set Rng = sheet.Range("H1:H" & lastrow)

            For i = Rng.Cells.Count To 1 Step -1
                If Application.WorksheetFunction.IsNA(Rng(i).Value) Then
                    Rng(i).EntireRow.Delete
                ElseIf Rng(i).Value = "#NA" Then
                    Rng(i).EntireRow.Delete
                End If
            Next

        ElseIf Count = 4 Then
            lastrow = sheet.Cells(sheet.Rows.Count, "B").End(xlUp).Row
            Set Rng = sheet.Range("B1:B" & lastrow)
            Debug.Print (Rng(4).Text)

            If Rng(2).Value = "320857876" And Rng(3).Value = "32085678" And Rng(4).Value = "12133435" Then
                For i = Rng.Cells.Count To 1 Step -1
                    If Left(Rng(i).Value, 3) = "302" Then
                        Rng(i).EntireRow.Delete
                    End If
                Next
            End If

            lastrow = sheet.Cells(sheet.Rows.Count, "C").End(xlUp).Row
            Set Rng = sheet.Range("C1:C" & lastrow)

            For Each cell In Rng
                cell.Value = ""
            Next cell

        End If

        Count = Count + 1

    Next

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM