VBA Excel 2013将某个信息从一个工作表复制到另一个工作表 – 每周报告

我是VBA的超级新手,希望有人能帮忙。 这是我迄今为止:

Public Sub Late() Dim LastRow As Long Dim MasterLastRow As Integer Dim NewRange As Range Dim TrackingCount As Integer Worksheets("Master").Select Range("A4").Select LastRow = Cells(Rows.Count, 1).End(xlUp).Row Set NewRange = Cells(LastRow + 1, 1) Dim i As Integer For i = 1 To LastRow If TrackingCount > 14 Then 'Copy row, col. A:M of "Master" worksheet into Col. A:M of "Late Report" worksheet End If Next i 

说明:对于“主”工作表中的Col Q中的每个TrackingCount> 14,我只需要复制这些行,从A到M列,并粘贴到“Late Report”工作表(以A:3开头),一行(对于TrackingCount> 14的每一个)。

一旦完成,我需要在跟踪计数在7和14之间时做同样的事情(粘贴在第一次报告后面的晚报电子表格中)。 然后在2和6之间进行第三次报告; 最后当= <0为最终报告。

所有报告都需要一个接一个粘贴。 这是一个每周报告,其中行数每周都会有所不同。

好吧,让我们看看这是否足以让你开始。

 Option Explicit Public Sub LateReport() Dim MasterSheet As Worksheet Dim DestinationSheet As Worksheet Dim workingCell As Range Dim workingRange As Range Dim DestinationRow As Integer Set MasterSheet = ThisWorkbook.Worksheets("Sheet1") ' You may want to correct the name Set DestinationSheet = ThisWorkbook.Worksheets("Sheet2") ' And for this as well Set workingRange = MasterSheet.Range("A4:M4").CurrentRegion ' Adjust this starting point as required For Each workingCell In workingRange.Columns(1).Cells ' We'll work our way down each cell in the first column If workingCell.Offset(0, 16).Value > 14 Then ' The Offset method looks at the cell X rows and Y columns away; in our case, 0 rows down and 16 columns across workingCell.Range(workingCell, workingCell.Offset(0, 20)).Copy ' Copy that row DestinationSheet.Range("A3").Offset(DestinationRow, 0).PasteSpecial xlPasteValuesAndNumberFormats ' Paste it to our destination End If DestinationRow = DestinationRow + 1 Next Set MasterSheet = Nothing Set DestinationSheet = Nothing End Sub 

一些关键字

Option Explicit是必须的。 如果我们没有正确地声明我们的variables,它确保我们不会得到模糊的错误。

下一个是CurrentRegion属性。 这将select我们定义的单元(在这种情况下,单元格A4到M4)周围的所有单元格。 这是一个快速简单的方法来查看和使用一个集合中的一个单元块。

你的下一个任务是调整这段代码,以处理“Q”列中的值在7到14之间,在2到6之间,小于或等于1的情况(我假设你的原始问题是一个错字:你说“0”)。

祝你好运!

如果没有工作表,我不能真正看到整个问题,但是在我看来,您尝试复制满足要求的一定数量的行。

首先编程这个更有效的方法

  • 使用“插入>表格”在Excel中设置表格。
  • 然后使用“数据”>“筛选”来筛选满足要求的所有行
  • 然后复制这些行(或部分行)

如果你不确定如何编程,我build议录制一个macros。 另请参阅VBA中的Excel ListObject。