我在第 2 张表的 A 列中有一列电子邮件地址(但如果这样更容易/更快,我可以将它们放在第 1 张表上),如果匹配的话,我想从第 1 张表的 D 列中删除这些电子邮件地址(可能有 2 个或更多相同的电子邮件需要删除/清除,每张表中有 1000 多行)。
在论坛上搜索了一整天后,我越来越困惑,找不到我要找的东西。不确定是否要使用 .match 或 .find & .ClearContents 和迭代语法。
答案1
您的帖子带有 VBa 标签,因此,此宏可以实现这一点。但是,我没有使用您提到的 match 或 find,我不确定您是否必须使用它们,我假设不需要,您只是展示了您尝试过的内容。
与宏一样,首先保存您的工作,创建文件的副本,然后应用它(以防万一它没有按照您的要求执行,这意味着您有一个备份)
Sub RemoveEmails()
Dim row As Integer
row = 1
Dim sheet_A_Column As String
sheet_A_Column = "D" ' UPDATE ME IF NEEDED. I am the column of emails in the main table. You will be deleting emails from this list
Dim sheet_B_Column As String
sheet_B_Column = "A" ' UPDATE ME IF NEEDED. I am the list of emails which need to be matched for deletion.
Do While (True) ' don't ever stop me! I loop forever...
Dim theValue As String
theValue = Worksheets("Sheet2").Range(sheet_B_Column & row).Value ' the value on Sheet2 (the delete list)
If theValue = "" Then
Exit Do ' unless I run out of things to loop through, at which point, exit
End If
'Now to loop through all the cells on Sheet1 to see which value(s) need clearing or not
For Each c In Worksheets("Sheet1").Range(sheet_A_Column & ":" & sheet_A_Column).Cells
If c.Value = theValue Then
c.Value = ""
End If
Next
row = row + 1
Loop
End Sub
因此,有一些屏幕截图可以帮助解释。
Sheet2 上的电子邮件列表是我们想从 Sheet1 中删除的
现在,Sheet1 是我们想要删除其中一些内容的实际列表。
运行宏后的最终结果
我必须承认,我给出的代码不是最有效的,但是根据您的问题,它能够满足需要!
答案2
对此有一个非常简单的解决方法。Excel 的“删除重复项”逻辑是删除电子表格中显示较低的重复项。
如果您想要删除工作表 1 中出现的工作表 2 中的所有项目,只需将工作表 2 中的项目粘贴到工作表 1 的顶部,对该列运行 REMOVE DUPLICATE 函数,然后删除工作表 2 中的所有项目。
就这么简单。