满足条件时Excel VBA从一张图纸复制粘贴循环到另一张图纸

满足条件时Excel VBA从一张图纸复制粘贴循环到另一张图纸,excel,row,conditional-statements,copy-paste,Excel,Row,Conditional Statements,Copy Paste,我是VBA的初学者。我已经检查了这个问题是否已经被问过了,但是没有发现任何完美的答案,而且我也没有正确地修改我找到的最接近的代码 我有一个包含原始销售数据(约5000项)的文件,位于表1的a列。在表2中,我有一个包含约500项数据的表,a列中消除了表1中的重复项。在B列中,500个项目中的每一个都被重命名 我想创建一个循环,检查sheet1列a中的每个单元格的数据是否与sheet2列a中的一个数据相同。当满足条件时,它会将sheet2中的适当单元格复制粘贴到sheet1列B中的适当单元格(即同一

我是VBA的初学者。我已经检查了这个问题是否已经被问过了,但是没有发现任何完美的答案,而且我也没有正确地修改我找到的最接近的代码

我有一个包含原始销售数据(约5000项)的文件,位于表1的a列。在表2中,我有一个包含约500项数据的表,a列中消除了表1中的重复项。在B列中,500个项目中的每一个都被重命名

我想创建一个循环,检查sheet1列a中的每个单元格的数据是否与sheet2列a中的一个数据相同。当满足条件时,它会将sheet2中的适当单元格复制粘贴到sheet1列B中的适当单元格(即同一行)。我需要为500件物品做手术

  • 示例表1(参见链接:/expected results in red)
产品分类1

巧克力
cosme
巧克力
cosme
cosme
cosme
cosme
巧克力
巧克力
cosme
cosme
堵塞 cosme
科斯梅

  • 示例表2(参见链接:)
产品

巧克力 科斯梅 堵塞

这是指列排序2,包括:

赵 余弦 堵塞

  • 迄今为止编写的代码

    Sub sorting()
    
     Dim Cell As Range
     Dim i As Integer
    
      For Each Cell In Sheet1.Range("A2:A10000)
       If Cell.Value = Sheet2.Range("A2") Then
       Sheets("Sheet2").Select
       Range("A2").Select
       Selection.copy
       Sheets("Sheet1").Select
       Cell(i,2).Select
       Cell.PasteSpecial
       End If
      Next Cell
    
    End Sub
    

听起来您只需要在sheet1 b列中使用vlookup公式

类似于B2单元1中的内容

=Vlookup(A2,sheet2!'A1:B500,2,0)
然后复制粘贴到b列

查看您的代码您没有将变量i设置为任何值,看起来您需要在if之前添加
i=i+1

我也会删除你的选择和选择,因为这可能会导致错误,如果你点击鼠标。 你只需要

Sheets("sheet2").Range("A2"). copy
而不是

    Sheets("sheet2").select
Range("A2").select
    Selection.copy

您是否也应该复制B2,因为A2是您要匹配的值

您可以提供您想要的示例结果吗?最好是excel数据截图?用户高级过滤器可以轻松完成此操作。感谢您的回复,我创建了一个具有类似功能的假文件,并根据您的要求添加了图片链接。我是一个新用户,似乎我还没有被授权直接发布图片。我知道,与其他类似主题的线程一样,高级过滤器不是解决方案,因为我需要频繁更新数据库。也许我错了?谢谢你的回答。几天前我尝试了VLOOKUP、索引匹配和IF,但失败了。问题是我需要在表1中对表2中的500个箱子重复相同的操作。AFAIK一个公式听起来仅限于执行这项任务。很乐意提供帮助,尽管看了你们的例子,我仍然认为vlookup会起作用(我可能遗漏了一些东西)。我已经查看了您的代码,并在我的答案中添加了如何修复它的想法。虽然我总是说,如果可以的话,最好做一个公式,而不是vba,这样更容易维护,而且通常更快。