满足条件时,Excel VBA从一个工作表复制粘贴循环

时间:2018-02-04 08:32:24

标签: excel row conditional-statements copy-paste

我是VBA的初学者。我已经检查过问题是否已经被问到但是没有找到完全合适的东西,而且我也没能正确修改我找到的最接近的代码。

我有一个原始销售数据(大约5,000项)的文件位于sheet1列A中。在sheet2中,我在A列中有一个包含大约500个数据的表,其中已删除了sheet1中的重复项。 500个项目中的每一个都在B列中重命名。

如果数据与sheet2列A中的一个数据相同,我想创建一个循环来检查sheet1列A中的每个单元格。当满足条件时,它会复制粘贴B列中的适当单元格sheet1列中的适当单元格中的sheet2(即同一行)。我需要对500件物品进行操作。

产品分类1

巧克力
COSME
巧克力
COSME
COSME
COSME
COSME
巧克力
巧克力
COSME
COSME
果酱 COSME
COSME

产品

巧克力 COSME 果酱

其中列Sorting2与:

CHO COS JAM

  • 到目前为止编写的代码

    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
    

1 个答案:

答案 0 :(得分:0)

这听起来像你需要在sheet1列b中使用vlookup公式

类似于单元格B2 sheet1

=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是您匹配的值