如果满足If条件,则从行复制粘贴特定列

时间:2017-08-28 11:02:51

标签: excel excel-vba loops copy-paste vba

我正在尝试构建一个宏,以便在满足If条件时从行复制粘贴特定列。 If条件的一部分经过测试和工作,因为我在另一个宏中使用过它。我的问题是我不知道如何在循环中选择行的特定列。我只知道如何选择整行(在这种情况下,它将是行(i).EntireRow.Copy如果我没有记错)。我在下面提供我的代码。

需要编辑的部分
.Rows(i).Columns(1, 4, 6, 8).Copy
Sheets("WFRandVFR_REPORT").range("W2").Paste

整个代码就是这个

(更新版本)

我也提供截图

enter image description here enter image description here

Dim lr As Long
Dim rng As range
Dim mDiff1 As Double
mDiff1 = 0.01
With Worksheets("WFRandVFR_REPORT")
    lr = range("L" & Rows.Count).End(xlUp).Row
    For i = 2 To lr
        If Cells(i, "U").Value - Cells(i, "V").Value > mDiff1 Then
            If rng Is Nothing Then
                Set rng = .range("L" & i & ":V" & i)
            Else
                Set rng = Union(rng, .range("L" & i & ":V" & i))
            End If
        End If
    Next i
    rng.Copy
    Sheets("WFRandVFR_REPORT").range("AI2").PasteSpecial
End With

1 个答案:

答案 0 :(得分:1)

要复制,您可以使用

Range("A" & i & ", D" & i & ", F" & i & ", H" & i & "").Copy  '(as mentioned in comment)

Union(.Range("A" & i), .Range("D" & i), .Range("F" & i), .Range("H" & i)).Copy

因此,试试

Union(.Range("A" & i), .Range("D" & i), .Range("F" & i), .Range("H" & i)).Copy
Sheets("WFRandVFR_REPORT").range("W2").PasteSpecial xlPasteValues

或只是

Union(.Range("A" & i), .Range("D" & i), .Range("F" & i), .Range("H" & i)).Copy
Sheets("WFRandVFR_REPORT").range("W2").PasteSpecial

Union(.Range("A" & i), .Range("D" & i), .Range("F" & i), .Range("H" & i)).Copy Sheets("WFRandVFR_REPORT").range("W2")

编辑:

如果没有将FOR循环更改为

,是否有任何特定原因可以从下到上循环
For i = 2 To lastrow

您的代码将是

Dim mDiff As Integer
Dim rng As Range
mDiff = 0.03
With Worksheets("WFRandVFR_REPORT")
    lastrow = Range("L" & Rows.Count).End(xlUp).Row
    For i = 2 To lastrow
        If Cells(i, "U").Value - Cells(i, "V").Value > mDiff Then
            If rng Is Nothing Then
                Set rng = .Range("L" & i & ":V" & i)
            Else
                Set rng = Union(rng, .Range("L" & i & ":V" & i))
            End If
        End If
    Next i
    rng.Copy
    Sheets("WFRandVFR_REPORT").Range("AI2").PasteSpecial
End With
相关问题