Vba 我需要将带有匹配拉链的行复制到相应的表中

Vba 我需要将带有匹配拉链的行复制到相应的表中,vba,excel,Vba,Excel,正如你在图片中看到的,我有一个列,上面有邮政编码和匹配的表格。我需要有所有的邮政编码,匹配一个表复制过来,另一个问题是,一些表是由两个或更多的邮政编码。我知道我可以用嵌套在do-Until中的大量If语句来实现这一点,但我觉得这是一种非常低效的实现方式。我还在学习,所以我希望有人能帮上忙。提前谢谢 选项1:在Excel中的每个工作表上使用Microsoft Query 在每个工作表上创建一个快速MS查询,如下所示 SELECT * FROM [Sheet1$] WHERE ZIP = "9458

正如你在图片中看到的,我有一个列,上面有邮政编码和匹配的表格。我需要有所有的邮政编码,匹配一个表复制过来,另一个问题是,一些表是由两个或更多的邮政编码。我知道我可以用嵌套在do-Until中的大量If语句来实现这一点,但我觉得这是一种非常低效的实现方式。我还在学习,所以我希望有人能帮上忙。提前谢谢

选项1:在Excel中的每个工作表上使用Microsoft Query 在每个工作表上创建一个快速MS查询,如下所示

SELECT * FROM [Sheet1$] WHERE ZIP = "94585"
如果您需要超过1个邮政编码:

SELECT * FROM [Sheet1$] WHERE ZIP = "94585" OR ZIP = "94586"
如何在Excel中创建Microsoft查询?转到
数据->其他来源->Microsoft Query
或使用我的加载项:

选项2:VBA宏 创建一个VBA宏,用于:

  • 遍历工作表
  • 检查工作表名称中的邮政编码(我猜这就是它的组织方式)
  • 遍历
    Sheet1
    中的所有行,并复制与邮政编码匹配的行
  • 下面是一些代码存根:

    遍历工作表

    for each ws in ActiveWorkbook.Sheets
      'Your code here
    Next ws
    
      for i = 1 to i = (ws.Range("A1").End(xlDown).Row-1)
      if Range("A1").Offset(i).Value = ZIP1 or Range("A1").Offset(i).Value = ZIP2 then
        'Copy the row
      end if
    Next ws
    'ws - is Sheet1
    
    遍历行并检查是否匹配zip


    我觉得选项一要简单得多!这会占用整排人的时间吗?我需要整个条目。如果使用
    SELECT*
    ,确定if将取所有列,或者如果您将它们命名为
    SELECT Address,ZIP
    ,它可以只取一些列。请参阅我的帖子,了解更多有关如何在Excel中使用Microsoft查询的信息:如果证明+1有帮助,我将不胜感激。我无法使用第一个选项。第二个基本上是我最初计划如何做的,但是做这件事的代码量相当大。我需要过滤大约40个拉链。这可能是我唯一的选择,尽管我更新了帖子。我用我的插件包括了一个屏幕截图。您也可以使用Data->From other…->Microsoft Query