我在Excel中的工作表中有两个删除行,基于另一个工作表中的条件。
条件表如下
Delete(Y/N) ReferenceID
Y 1
N 2
Y 3
Y 4
N 5
数据表如下
Name ReferenceID
John 1
Andy 2
Mary 3
Anna 4
Rony 5
基于条件表的删除(Y / N)列,我必须删除John,Mary和Anna,参考ID为1,3和5
我查看了另一个解决方案示例here,但条件似乎来自同一张表。我不知道如何根据适用的参考资料从另一张表开始工作。
有关如何执行此操作的任何想法。
答案 0 :(得分:2)
使用Yes构建ReferenceID的字典,然后使用xlFilterValues参数构建字典键上的AutoFilter。如果有可见行,请删除它们。
Option Explicit
Sub qwewqw()
Dim d As Long, dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.comparemode = vbTextCompare
With Worksheets("Conditional")
For d = 2 To .Cells(Rows.Count, "B").End(xlUp).Row
If LCase(.Cells(d, "A").Value2) = "y" Then
dict.Item(CStr(.Cells(d, "B").Value2)) = .Cells(d, "A").Value2
End If
Next d
End With
With Worksheets("Data")
If .AutoFilterMode Then .AutoFilterMode = False
With .Cells(1, "A").CurrentRegion
.AutoFilter Field:=2, Criteria1:=dict.keys, Operator:=xlFilterValues
With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
If CBool(Application.Subtotal(103, .Cells)) Then
.Cells.EntireRow.Delete
End If
End With
.AutoFilter
End With
End With
End Sub
奇怪的是,以这种方式使用字典密钥要求您将数字视为文本以进行过滤。