2017-08-28 94 views
1

我试图在If条件满足时从宏复制粘贴特定列。 If条件的一部分经过测试和工作,正如我在另一个宏中使用过的那样。在我的情况下,问题是我不知道如何选择循环内的行的特定列。我只知道如何选择整行(在这种情况下,如果我没有弄错的话,它应该是行(i).EntireRow.Copy)。我在下面提供我的代码。需要编辑的部分是如果满足If条件,则从行复制粘贴特定列

.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 
+2

试试这个:'.Range(“A”&i&“,D”&i&“,F”&i&“,H”&i&“”).Copy' –

+0

那么,粘贴方法无法工作..我需要从第2行的列W到AF执行粘贴,并且下降 –

+1

您需要使用'.Range(“W”&i).PasteSpecial(xlValues)' –

回答

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 
+0

非常感谢!我用了第三个! –

+0

我没有注意到它,但它覆盖了数据...所以,它的工作原理,但它不会粘贴数据一个在另一个下面...对不起..我刚刚检查它。我认为它一开始只有一行! –

+0

@PericlesFaliagas - 请参阅编辑。 – Mrig

相关问题