我正在尝试构建一个宏,以便在满足If条件时从行复制粘贴特定列。 If条件的一部分经过测试和工作,因为我在另一个宏中使用过它。我的问题是我不知道如何在循环中选择行的特定列。我只知道如何选择整行(在这种情况下,它将是行(i).EntireRow.Copy如果我没有记错)。我在下面提供我的代码。
需要编辑的部分.Rows(i).Columns(1, 4, 6, 8).Copy
Sheets("WFRandVFR_REPORT").range("W2").Paste
整个代码就是这个
(更新版本)
我也提供截图
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
答案 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