宏 - 如果值满足条件复制粘贴到另一张纸

Posted

技术标签:

【中文标题】宏 - 如果值满足条件复制粘贴到另一张纸【英文标题】:Macro - IF value meets condition copy paste to another sheet 【发布时间】:2017-05-22 22:41:38 【问题描述】:

我可以就这个宏获得一些帮助吗?我想浏览“Sheet1”中表格 P 列中的所有值。这是一张桌子的照片:

First Table

如果值为

Second Table

如有任何帮助,我们将不胜感激

【问题讨论】:

你是先尝试自己做的吗?另外,它必须通过VBA完成吗?因为这也可以用 Excel 公式完成。 查看Index/Match,我相信这会让您开始了解如何仅将这些值放到另一张纸上。 (If you're curious about the downvotes) 【参考方案1】:

在您希望数据进入的工作表(表 2)和标题下方(表 2)中,将单元格设置为与表 1 中所需的单元格相同。按“=”然后单击到带有表 1 的工作表,然后单击第一行的单元格。对名称、标识符、扇区、速率重复此操作... 完成第一行后,突出显示第二行上的单元格,然后单击并按住黑线的右下角并向下拖动到相同的行数来自表 1。

如果您想将值粘贴到那里,则突出显示范围并复制并右键单击粘贴 > 特殊粘贴(单击特殊粘贴)并选择值。

然后您可以根据说明表按您需要小于1的列对数据进行排序,并删除大于1的行。

【讨论】:

【参考方案2】:

我不知道您要复制哪些列,因为它们没有在您拥有的第一个表格图像中命名,所以我只是做了一个宏,您可以根据需要自行调整范围以及您需要的工作表。

下面的代码循环遍历您的数据,检查Column P 中每一行的数据是否小于 1,并将数据放入一个变量中,您可以在其中复制并粘贴到您需要该数据的任何位置,

代码,

Sub d()
   Dim i As Long
   Dim lastrow As Long
   Dim rng As Range

   lastrow = Cells(Rows.Count, 1).End(xlUp).Row
   For i = 2 To lastrow
      If Range("P" & i).Value < 1 Then
         If Not rng Is Nothing Then
             Set rng = Union(rng, Range("B" & i), Range("C" & i), Range("D" & i), Range("Q" & i), Range("H" & i), Range("I" & i), Range("P" & i))
         Else
             Set rng = Union(Range("B" & i), Range("C" & i), Range("D" & i), Range("Q" & i), Range("H" & i), Range("I" & i), Range("P" & i))
         End If
      End If
   Next
   rng.Copy Sheets("explanation").Range("A2")
End Sub

看看这有没有帮助?

【讨论】:

以上是关于宏 - 如果值满足条件复制粘贴到另一张纸的主要内容,如果未能解决你的问题,请参考以下文章

将每个唯一值从一张纸复制并粘贴到另一张纸上

宏复制到另一张纸上的下一个空白行

从范围循环中的每个单元格复制数据并将其粘贴到另一张纸上

在一张纸中查找一个值,计算它并将结果粘贴到另一张纸中

根据查找值将值从一张表匹配并粘贴到另一张表中

VBA复制最后一行范围并粘贴到另一个工作表