繁体   English   中英

筛选某些行并将其从多个Excel工作表复制到另一个

[英]Filter and copy certain rows from multiple excel sheets to another

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

如果您将其分解,则可以很容易地自己创建:

  • 新增工作表
  • 将工作表命名为Pending Week
  • 查找最新的五张纸。
  • 如果J列中的单元格包含值“ Pending”,则创建某种复制粘贴行的循环

您尚未提供任何代码,因此我将为您提供一个工作基础:

您添加一个新工作表并使用以下命令为其命名:

Worksheets.Add
ActiveSheet.Name = "Pending week"

查找五个最新的工作表

据我所知,您找不到最新的工作表。 工作表不包含创建日期和时间。 但是,如果我们忽略这一点,并希望将最新的五张工作表放置在工作簿中最右边(新创建工作表的默认位置)。 然后,您需要弄清楚您有多少张纸,然后倒数。

您可以使用: Worksheets.Count来计数所有Worksheets.Count表。 使用此数字并倒数。 我首先想到的是使用For Loop

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

Next

X将是找到我们最新图纸的标识符。 因此,您应该将其合并到下面的循环中。 您要将循环放置在此For块内。

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

如果所有J单元中都有一个值,则可以使用Do Until循环”。 然后,您只需将整行插入待定周

它看起来像:

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值区分大小写,因此请记住这一点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM