【问题标题】:Excel VBA copy paste loop from one sheet to another when condition is met满足条件时,Excel VBA将循环从一张纸复制粘贴到另一张纸
【发布时间】:2018-02-04 08:32:24
【问题描述】:

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

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

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

产品分类 1

巧克力
化妆品
巧克力
化妆品
化妆品
化妆品
化妆品
巧克力
巧克力
化妆品
化妆品
果酱 化妆品
化妆品

产品

巧克力 化妆品 果酱

指的是列Sorting2:

CHO 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
    

【问题讨论】:

  • 您能否提供一个您想要的示例结果 - 最好是 excel 数据截图?
  • 用户高级过滤器可以轻松完成。
  • 感谢您的回复,我创建了一个具有类似功能的假文件,并根据您的要求添加了图片链接。我是新用户,看来我还没有被授权直接发布图片。我在类似主题的其他线程中了解到,高级过滤器不是解决方案,因为我需要经常更新数据库。也许我错了?

标签: excel row conditional-statements copy-paste


【解决方案1】:

这听起来你只需要在 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 是您匹配的值

【讨论】:

  • 感谢您的回复。几天前我尝试了 VLOOKUP、INDEX MATCH 和 IF,但失败了。问题是我需要在 sheet1 中对 sheet2 中的 500 个案例重复相同的操作。 AFAIK 一个公式听起来仅限于执行此任务。
  • 很高兴为您提供帮助,尽管查看您的示例我仍然认为 vlookup 会起作用(我可能遗漏了一些东西)。我查看了您的代码,并在我的答案中添加了我认为如何修复它。虽然我总是会说,如果可以的话,最好做一个公式而不是 vba,这样很容易维护,而且通常更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2017-05-22
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
相关资源
最近更新 更多