筛选并复制多个Excel表中的某些行到另一个
我正在使用具有各种工作表的工作簿。我想要复制最后5张在其“J”列中值为“Pending”的所有行。我想创建一个名为“Pending week”的新标签,并将所有这些行粘贴在那里。任何帮助将非常感激。 感谢筛选并复制多个Excel表中的某些行到另一个
您可以非常轻松地自己创建这个,如果你只是把它分解:
- 添加新表
- 名称将片材挂起周
- 找到五张最新。
- 创建某种循环的副本,如果细胞J列包含值粘贴行“待定”
您没有提供任何代码,所以我会给你一个基地,从工作:
您使用添加一个新表&命名为:
Worksheets.Add
ActiveSheet.Name = "Pending week"
找到五张最新
据我所知,你找不到最新的床单。表格不包含创建时间的日期和时间。但是,如果我们忽视这一点,并期望将最新的五张工作表放在工作簿中的最右侧(新创建的工作表的默认位置)。然后你需要弄清楚你有多少张纸并向后计数。
您可以使用:Worksheets.Count
来统计所有工作表。使用此号码并向后计数。我首先想到的是使用一个For Loop
Dim X As Integer
For X = (Worksheets.Count - 4) To Worksheets.Count
Next
X
将标识符来找到我们的最新表。所以你应该把它融入下面的循环中。你想把循环放在这个For Block中。
环
有很多方法可以找到在纸张上的价值,但你需要弄清楚你的床单的最后一排的。没有它,我们不知道代码何时应该停止。
如果所有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是区分大小写的,所以请记住。
好吧,这就是你需要创建你的代码。当然,您需要更改值以适合您自己的工作簿,但这是基础。
OP刚刚添加了一张纸,所以最后5张会包含他们正在粘贴的纸张而不是它?也许在添加表单部分中指定条件之前? – QHarr
这是一个很好的观点,但它似乎并没有像这样工作。 'Worksheets.Add'在工作簿的最左边添加工作表。所以它不应该影响其他代码。为了确保这一点,我们可以使用'Before:= Worksheets(1)'。 – EliasWick
你好@EliasWick我想感谢你的答案。这是很好解释。首先,我想从最后5张纸张中取出值,即只将纸张放在最右边。当我尝试运行你的代码时,我达到了Do while循环,它跳过条件并直接进入下一张表单。你可以模拟一次,如有必要纠正它。 –
到目前为止您尝试过什么? – newacc2240
另外,它总是最后5张?如果用户重新安排工作表或添加/删除工作表,会发生什么情况? – QHarr
它总是最后5张@QHarr –