2016-09-09 1 views
-1

У меня довольно ограниченное знание VBA, поэтому, надеюсь, я могу объяснить, что я пытаюсь сделать! Я пытаюсь скопировать строку, если она имеет что-нибудь> 0 в столбце J.Скопируйте строку и вставьте ниже, когда значение ячейки найдено в столбце

Затем я хочу вставить эту скопированную строку в новую строку ниже, скопированную ячейку.

Я хотел бы, чтобы это пробило весь рабочий лист, чтобы каждая строка со значением в J повторялась, данные на листе изменяются по размеру, всегда будет значение в столбце B до конца данных. .

Вот моя неудачная попытка далеко ..

Sub Copy_Cells() 
    For Each Objcell In ActiveSheet.Columns(10).Cells 
    Do 
    If Objcell.Value > 0 Then 
     Objcell.EntireRow.Select 
     Selection.Copy 
     Selection.Insert Shift:=xlDown 
     Exit Sub 
     Loop Until IsEmpty(ActiveSheet.Columns(2).Cells) 
    End If 
Next Objcell 

End Sub 

ответ

1

Я думаю, что это то, что вы пытаетесь сделать.

Sub Copy_Cells() 
    botRow = 100 
    For i = botRow To 1 Step -1 
     If Cells(i, 10).Value > 0 Then 
     Rows(i).EntireRow.Copy 
     Rows(i + 1).Insert Shift:=xlDown 
     End If 
    Next i 
End Sub 

Вы должны были бы установить нижний ряд или вы можете реализовать подсчет использованных строк и т.д.

+0

Это сработало отлично, спасибо! – hb332

+0

@ hb332 [Вы должны принять ответ, если он вам поможет] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – 0m3r

0
Sub Copy_Cells() 
    Dim totalRow as Integer 
    totalRow = Activesheet.Cells(1,2).End(xlDown).Row 'Count total row from B column 
    For Each Objcell In Activesheet.Range("J1:J" & totalRow) 
     If Objcell.Value > 0 Then 
      Objcell.EntireRow.Select 
      Selection.Copy 
      Selection.Insert Shift:=xlDown 
     End If 
    Next Objcell 
End Sub 
+0

Спасибо за вашу помощь, однако это, казалось, продолжать копировать и вставлять строки со значениями в J Я использовал оба комментария и закончил с этим, отлично работает. Sub Copy_Cells() botRow = ActiveSheet.Cells (1, 2) .END (xlDown) .Row Для я = botRow К 1 Шаг -1 Если клетки (я, 10) .Value> 0 Тогда Ряды (I) .EntireRow.Copy Строки (i + 1) .Insert Shift: = xlDown End If Next i End Sub Спасибо и вам! – hb332

Смежные вопросы