VBA Excel:根据其他工作表中的值删除行 [重复]

VBA Excel: deleting rows based on value in other sheet [duplicate]

提问人:Hajoroeters 提问时间:11/7/2023 最后编辑:Mayukh BhattacharyaHajoroeters 更新时间:11/7/2023 访问量:42

问:

我目前正在尝试清理我的数据集。我目前有两张纸:“sheet1”和“sheet2”。 sheet2 中的前 11 列链接到 sheet1,因此是相同的。但是,第 13 列包含在 sheet2 中,即“是”或“否”。

我的目标是制作一个 VBA 宏,当 sheet1(第 13 列)中的确切行显示“是”时,它会删除 sheet2 中的特定行。但是,使用我当前的代码,只有 sheet2 中的顶部 (i = 2) 行被删除。

其背后的想法是,当 sheet1 中的一行被删除,并且 sheet2 链接到 sheet1 时,sheet2 将被自动删除。

我目前的代码:

Sub Coentunnel_Delete_rows()
    Dim Acc As Worksheet
    Dim Rev As Worksheet
    Set Acc= Worksheets("Sheet1")
    Set Rev= Worksheets("Sheet2")
    For i = 2 To Acc.UsedRange.Rows.Count
        If Rev.Cells(i, 13).Value = "Yes " Then
            Rows(i).EntireRow.Delete
        End If
        If Rev.Cells(i, 13).Value = "Yes " Then
            Rows(i).EntireRow.Delete
        End If
    Next i
End Sub
EXCEL VBA,Excel-2010 VBA7

评论

1赞 PeterT 11/7/2023
两件事:首先,一定要限定你的引用,因为只引用当前活动的工作表。其次,在删除行时,通常最好从下往上删除Rows(i)
0赞 BigBen 11/7/2023
更好的是,用于创建一个要删除的范围,并且仅在循环删除。Union
0赞 Hajoroeters 11/7/2023
@PeterT,感谢您的回复。但是,如果我不使用 Rows(i),因为这仅指向当前工作表,我如何在 sheet1 中选择与 sheet2 相对应的特定行(当 rev.cells(i,13).value = “Yes ”?
0赞 Hajoroeters 11/7/2023
@bigben,感谢您的回复。如果我要使用 Union 函数,当满足条件时,如何引用 sheet1 中对应于 sheet2 的正确行?
0赞 BigBen 11/7/2023
像现在一样使用 。i

答: 暂无答案