将基于标准的某个列的单元格复制到下一个可用行的另一个列中

我有两个工作表,“签名”和“四月”。 我想从“签名”的列“Y”根据一定的标准复制到列“A”从下一个可用/空白行开始。 (就在现有数据的基础上)。

我列Y的标准是,如果列L =从“四月”的细胞“D2”的月份和从“ApriL”的细胞“D2”的年份…(所以现在D2是2017/4/30)。然后将该单元格复制到“April”的列A的下一行并继续添加。

我的代码如下:

Dim sourceSht As Worksheet Dim myrange As Range Dim DestRow As Integer Dim ws2 As Worksheet Dim MonthVal As String Range("D3").Select ActiveCell.FormulaR1C1 = "=MONTH(R[-1]C)" Range("D3").Select Selection.NumberFormat = "General" MonthVal = ActiveCell.Value Set sourceSht = ThisWorkbook.Worksheets("Signed") Set myrange = sourceSht.Range("Y1", Range("Y" & Rows.Count).End(xlUp)) Set ws2 = Sheets("April") DestRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1 For Each rw In myrange.Rows If rw.Cells(12).Value = MonthVal Then myrange.Value.Copy Destinations:=Sheets(ws2).Range("A" & DestRow) End If Next rw 

尝试这个:

 Dim sourceSht As Worksheet Dim myrange As Range Dim DestRow As Integer Dim ws2 As Worksheet Dim MonthVal As String Dim rw As Range Range("D3").Select ActiveCell.FormulaR1C1 = "=MONTH(R[-1]C)" Range("D3").Select Selection.NumberFormat = "General" MonthVal = ActiveCell.Value Set sourceSht = ThisWorkbook.Worksheets("Signed") Set myrange = sourceSht.Range("Y1:Y" & sourceSht.UsedRange.Row - 1 + sourceSht.UsedRange.Rows.Count) Set ws2 = Sheets("April") DestRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row ' + 1 For Each rw In myrange '.Rows If sourceSht.Cells(rw.Row, 12).Value = MonthVal Then DestRow = DestRow + 1 rw.Copy Destination:=Sheets("April").Range("A" & DestRow) End If Next rw 

编辑:修复第15行(从Set myrange = sourceSht.Range("Y1:y" & sourceSht.UsedRange.Rows.Count)Set myrange = sourceSht.Range("Y1:Y" & sourceSht.UsedRange.Row - 1 + sourceSht.UsedRange.Rows.Count) ),以防在顶部有未使用的行。