2016-11-09 2 views
-1

я был просто интересно, если кто-нибудь знает, как я могу изменить код ниже, так что он будет копировать только строки, в которых значение в столбце D превышает значение 0Copy & Paste, когда диапазон соответствует критериям

Sub ADDTOORDERS() 
Dim Sh As Worksheet, C As Worksheet, Last As Long 
Set Sh = Sheets("Menu") 
Set C = Sheets("LensOrder") 
With Sh 
Last = .Cells(Rows.Count, 2).End(xlUp).Row 
    .Range("B7:D" & Last).AutoFilter Field:=2, Criteria1:=">0", Operator:=xlAnd 
    .Range("B7:D" & Last).SpecialCells(xlCellTypeVisible).Copy 
    C.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues) 
    Sheets("Menu").Range("C3").Select 
    .Range("B7:D" & Last).AutoFilter 
End With 
End Sub 
+2

Вы можете выполнить цикл из нижней части диапазона, задавая значения по строкам, соответствующие вашим критериям. Вы можете отфильтровать диапазон, затем скопировать и вставить видимые ячейки. –

+0

В идеале я искал, чтобы он работал в этом коде только потому, что я хотел, чтобы это было просто для пользователя, просто щелкнув по кнопке, и это просто копировать и вставлять заказы, на которые они отправили QTY. –

+0

@ScottCraner: почему «со дна диапазона»? Я прошу только потому, что мне любопытно, и ваш опыт не вызывает сомнений. – CMArg

ответ

1
dim i as Long 

for i = 7 to 68 
    If Sheets("Menu").Range("D" & i).Value > 0 Then 
     Sheets("Menu").Range("B" & i & ":D" & i).Copy 
     Sheets("LensOrder").Range("A" & Rows.Count).End(xlUp).Offset(1,0).PasteSpecial (xlPasteValues) 
    End If 
Next i