筛选并复制多个Excel表中的某些行到另一个

我正在使用具有各种工作表的工作簿。 我想要复制最后5张纸张“J”中的值为“Pending”的所有行。 我想要创build一个名为“Pending week”的新标签并粘贴所有这些行。 任何帮助将非常感激。 谢谢

如果你把它分解,你可以很容易地创build它:

  • 添加一个新的工作表
  • 将该工作表命名为Pending Week
  • find五张最新的床单。
  • 如果J列中的单元格包含值“Pending”,则创build一些复制粘贴行的循环

你还没有提供任何代码,所以我给你一个基地工作:

您添加一个新工作表并命名它使用:

Worksheets.Add ActiveSheet.Name = "Pending week" 

find五张最新的床单

据我所知,你找不到最新的床单。 表格不包含创build时间的date和时间。 但是,如果我们忽略这一点,并期望将最新的五张表放在工作簿中最右边的位置(新创build的工作表的默认位置)。 那么你需要弄清楚你有多less张纸,并倒数。

您可以使用: Worksheets.Count来计算所有Worksheets.Count表。 使用这个数字并向后计数。 我的第一个想法是使用For Loop

 Dim X As Integer For X = (Worksheets.Count - 4) To Worksheets.Count Next 

X将是标识符来查找我们的最新工作表。 所以你应该把它纳入我们的循环下面。 你想把这个循环放在这个For Block中。

循环

有很多方法可以在工作表中find一个值,但是您需要弄清楚工作表的最后一行是什么。 没有它,我们不知道什么时候应该停止代码。

如果所有J单元格中都有一个值,则可以使用Do Until Loop。 然后,您可以将整个行插入Pending周

它看起来像这样:

 Dim XLrow As Integer XLrow = 1 Do Until Worksheets(1).Cells(XLrow, "J") = "" If Worksheets(1).Cells(XLrow, "J") = "Pending" Then Worksheets(1).Range(XLrow & ":" & XLrow) = Worksheets("Pending week").Cells(XLrow, "J").Value End If XLrow = XLrow + 1 Loop 

您需要将范围更改为您想要复制的范围的长度。 注意:值Pending是区分大小写的,所以记住这一点。

好的,这是你需要创build你的代码。 当然,您需要更改值以适合您自己的工作簿,但这是基础。