Excel VBA 满足条件时,将粘贴循环从一个 sheet 复制到另一个 sheet
Excel VBA copy paste loop from one sheet to another when condition is met
我是 VBA 的初学者。我已经检查过这个问题是否已经被问过,但没有找到完全适合的东西,而且我也没有正确修改我找到的最接近的代码。
我有一个包含原始销售数据(大约 5,000 件)的文件,位于 sheet1 的 A 列中。在 sheet2 中,我有一个 table 在 A 列中有大约 500 条数据,其中 sheet1 中的重复项目有被淘汰。 B 列中的 500 个项目中的每一个都已重命名。
我想创建一个循环来检查 sheet1 列 A 中的每个单元格的数据是否与 sheet2 列 A 中的数据之一相同。当满足条件时,它会复制粘贴列中的适当单元格B 来自 sheet2 在 sheet1 B 列(即同一行)中的适当单元格中。我需要对500个项目进行操作。
- 示例 Sheet 1(参见 link:https://1drv.ms/i/s!AiRwDFaSvBNalTb0JOIkq8KxiBKs/红色的预期结果)
产品分类 1
巧克力
化妆品
巧克力
化妆品
化妆品
化妆品
化妆品
巧克力
巧克力
化妆品
化妆品
果酱
化妆品
化妆品
- 示例 Sheet2(参见 link:https://1drv.ms/i/s!AiRwDFaSvBNalTQlKgDKEJTNLvOU)
产品
巧克力
化妆品
果酱
引用列 Sorting2 与:
赵
COS
果酱
到目前为止编写的代码
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 的 b 列中使用 vlookup 公式
类似于单元格 B2 sheet1 中的内容
=Vlookup(A2,sheet2!'A1:B500,2,0)
然后将其复制粘贴到 b 列下方
查看您的代码,您没有将变量 i 设置为任何值,看起来您需要在 if
之前添加 i=i+1
我还会删除您的 select 和 selection,因为如果您单击鼠标,这可能会导致错误。
你只需要
Sheets("sheet2").Range("A2"). copy
而不是
Sheets("sheet2").select
Range("A2").select
Selection.copy
另外,您不应该复制 B2,因为 A2 是您要匹配的值
我是 VBA 的初学者。我已经检查过这个问题是否已经被问过,但没有找到完全适合的东西,而且我也没有正确修改我找到的最接近的代码。
我有一个包含原始销售数据(大约 5,000 件)的文件,位于 sheet1 的 A 列中。在 sheet2 中,我有一个 table 在 A 列中有大约 500 条数据,其中 sheet1 中的重复项目有被淘汰。 B 列中的 500 个项目中的每一个都已重命名。
我想创建一个循环来检查 sheet1 列 A 中的每个单元格的数据是否与 sheet2 列 A 中的数据之一相同。当满足条件时,它会复制粘贴列中的适当单元格B 来自 sheet2 在 sheet1 B 列(即同一行)中的适当单元格中。我需要对500个项目进行操作。
- 示例 Sheet 1(参见 link:https://1drv.ms/i/s!AiRwDFaSvBNalTb0JOIkq8KxiBKs/红色的预期结果)
产品分类 1
巧克力
化妆品
巧克力
化妆品
化妆品
化妆品
化妆品
巧克力
巧克力
化妆品
化妆品
果酱
化妆品
化妆品
- 示例 Sheet2(参见 link:https://1drv.ms/i/s!AiRwDFaSvBNalTQlKgDKEJTNLvOU)
产品
巧克力 化妆品 果酱
引用列 Sorting2 与:
赵 COS 果酱
到目前为止编写的代码
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 的 b 列中使用 vlookup 公式
类似于单元格 B2 sheet1 中的内容
=Vlookup(A2,sheet2!'A1:B500,2,0)
然后将其复制粘贴到 b 列下方
查看您的代码,您没有将变量 i 设置为任何值,看起来您需要在 if
之前添加i=i+1
我还会删除您的 select 和 selection,因为如果您单击鼠标,这可能会导致错误。 你只需要
Sheets("sheet2").Range("A2"). copy
而不是
Sheets("sheet2").select
Range("A2").select
Selection.copy
另外,您不应该复制 B2,因为 A2 是您要匹配的值