2017-08-28 45 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

相關問題