簡體   English   中英

根據條件將某個列中的單元格復制到下一個可用行中的另一個列中

[英]Copy cells from a certain column based on a criteria into another Column from the next available row

我有兩個工作表,“簽名”和“ 4月”。 我想從下一個可用/空白行開始,根據某些條件將“已簽名”列中的“ Y”列復制到“ A”列中。 (在現有數據下也是如此)。

我對Y列的標准是,如果L列=來自“ April”的單元格“ D2”的月份和來自“ ApriL”的單元格“ D2”的年份...(所以D2現在是4/30/2017)。然后將該單元格復制到“ April”的Col 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) ),以防頂部有未使用的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM