从master中删除时,Excel将从完整列表中删除行

时间:2011-12-19 20:52:14

标签: excel vba excel-vba

说我的工作簿中有2张。一个是主列表,其具有仅显示一次的键列以及一些其他相关信息。另一个有多个项目,其中密钥可以列出数百次。

我想要做的是当从主工作表中删除该行时,它会删除与另一个工作表具有相同键的所有行。

这可能吗?

谢谢, 注册

1 个答案:

答案 0 :(得分:1)

我们假设有两个工作表 - 第一个是master,其中包含所有唯一键,第二个工作表名为keys

接下来,假设数据设置如下:

    **Master**                **Keys**
    A      B                   A      B  
1   ABC1   other info...       ABC1   other info...
2   ABC2   other info...       ABC1   other info...
3   ABC3   other info...       ABC2   other info...
4   ABC4   other info...       ABC2   other info...
5   ABC5   other info...       ABC2   other info...
                               ABC3   other info...
                               ABC4   other info...

如果您选择要删除的master中的密钥并运行以下代码,则会从master中删除所选密钥,然后循环浏览keys并删除任何行拥有相同的钥匙:

Sub DeleteKeys()
    Dim KeyID As String, KeysLastRow As Long, rw As Long

    KeyID = Selection.Value 
    KeysLastRow = Worksheets("keys").Range("A1").End(xlDown).Row //Get last row in `keys` column A

    Selection.EntireRow.Delete //Delete selected key (and row) in `master`

    With Worksheets("keys") //Loop through `keys` deleting all matching keys
        For rw = KeysLastRow To 1 Step -1
            If .Cells(rw, 1).Value = KeyID Then
                .Cells(rw, 1).EntireRow.Delete
            End If
        Next rw
    End With
End Sub

希望这有助于您开始使用。