2017-06-20 58 views
0

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

我对列Y的判断标准是,如果列L =“4月”的单元格“D2”的月份和“ApriL”的单元格的年份...(因此D2现在是4/30/2017).. 然后将该单元格复制到“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 
+0

rw是什么?和细胞(12)。价值?所以这是一个固定值?像Cells([Lines],[Rows])是否是Line 12?或者你想要'L'行? – danieltakeshi

回答

1

尝试这种情况:

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))潜在漏洞,万一有在未使用的行顶端。

相关问题