Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 比较两个工作簿,删除匹配的行_Vba_Excel - Fatal编程技术网

Vba 比较两个工作簿,删除匹配的行

Vba 比较两个工作簿,删除匹配的行,vba,excel,Vba,Excel,我有三本作业本 “一个工作簿”是我每月添加到第二个工作簿中需要删除的内容的列表。我每个月都会收到第二本练习册。我收到的第二份工作簿总是包含一些无关的条目,这些条目的数量每月都在增长,短期内不会被修复。没有通用的过滤器,我可以不使第二个工作簿无用,所以我需要真正具体,有一个愚蠢的清洁清单 我的第三个工作簿是运行所有工作簿清理宏的地方 目的是将第一份工作簿A或B列中的条目与我收到的第二份工作簿A或B列中的条目进行比较。如果任何条目匹配,请删除第二个工作簿上的整行 我将每月做一次几百行,它将从第三个工

我有三本作业本

“一个工作簿”是我每月添加到第二个工作簿中需要删除的内容的列表。我每个月都会收到第二本练习册。我收到的第二份工作簿总是包含一些无关的条目,这些条目的数量每月都在增长,短期内不会被修复。没有通用的过滤器,我可以不使第二个工作簿无用,所以我需要真正具体,有一个愚蠢的清洁清单

我的第三个工作簿是运行所有工作簿清理宏的地方

目的是将第一份工作簿A或B列中的条目与我收到的第二份工作簿A或B列中的条目进行比较。如果任何条目匹配,请删除第二个工作簿上的整行

我将每月做一次几百行,它将从第三个工作簿中指定给形状的宏运行

这里我发布了一些代码,允许我打开两个文件并复制其中一个文件的内容,但我需要的是比较和删除工作簿2上与工作簿1匹配的行的代码。我自己的代码做得很糟糕,根本不值得发布

代码:

非常感谢您的代码、评论和建议! 干杯 克里斯托弗

代码更新上午8:30:这是一种新的方式,我想让事情的工作。我在代码行集合Rng=RangeA1:B10000&LR上遇到类型不匹配错误


你可以使用find方法;打开工作簿后你可以使用此代码,查找单元格地址,你可以轻松删除它清除命令

Dim GCell As Range

 Set GCell = ActiveSheet.Cells.Find("yourvariable")

回答你的具体问题

Set Rng = Range("A1:B10000" & LR)
应该是

Set Rng = Range("A1:B" & LR)

我想帮助你解决其他问题,但你的描述令人困惑,这是我所理解的;识别第二个工作簿中的错误信息并将该信息从第二个工作簿复制到第一个工作簿,然后需要一个宏将第一个工作簿中的内容与第二个工作簿中的内容匹配,并删除第二个工作簿中匹配的行。问题,为什么不删除第二个工作簿中的行,而不是将它们复制到第一个工作簿中

有MS Access的经验吗?您可以创建两个电子表格的链接,并将它们作为表格拉入。然后,您只需要一个SQL DELETE查询,该查询表示类似于表2中的DELETE(表1中存在)。这是简化的,不会运行,但很接近。然后可以导出表2。如果你打算经常做这类事情,我建议你调查一下。不幸的是,我的公司从来没有也永远不会使用access。效率太高了。这会解决很多问题,好主意!这也会起作用,但避免使用ActiveSheet是我尝试遵循的一个好规则。如果某个代码出错或选择了另一个工作表,它可以避免工作表之间的混淆。我正在尝试创建一个很难搞乱的工作簿。而且,在这种情况下,我认为我超出了我的知识范围。我知道我可以用这种方法找到一个特定的单词,但我不知道我的工作簿1上所有的零件号条目。嘿,非常感谢,我要把它应用到我的代码中!很抱歉造成混淆,让我试着澄清一下。很难只提供信息,尤其是没有上下文。因此,我有一个只用于宏的主excel表。我有一张excel表格,上面有我几个月来收集的所有坏数据零件号。我每个月都会收到另一张单独的表格,上面可能有也可能没有我收集到的一些不好的数据。我只是想确保,每当我收到这本新工作簿时,只要按下一个按钮,我不想要的所有数据都会被删除。泰!
Set Rng = Range("A1:B10000" & LR)
Set Rng = Range("A1:B" & LR)