#excel #vba
Вопрос:
Я столкнулся с проблемой, когда пытался добавить 2 значения для поиска, и, похоже, что-то не так с моим кодом.
Дело в том , что я добавил по 2 Для каждого, но я думаю, что это не так, как должно быть.
У меня есть 2 слова : PMC ( столбец F) и PRM ( столбец C) . Если они совпадают в основных данных листа, скопируйте эту строку и вставьте во Вторые данные.
Sub Copyrow() Dim c As Range Dim D As Range Dim j As Integer Dim Source As Worksheet Dim Target As Worksheet Dim lRow As Long Set Source = ActiveWorkbook.Worksheets("Main DATA") Set Target = ActiveWorkbook.Worksheets("Second Data") Lastrow = ActiveSheet.Cells(Rows.Count, "F").End(xlUp).Row 1 j = Cells(Rows.Count, 2).End(xlUp).Row For Each c In Source.Range("F1:F20000") For Each D In Source.Range("C1:C20000") ' Second ( FOR ) for addition search word. If c = "PMC" amp; D = "PRM" Then Source.Range("A" amp; c.D.Row, "O" amp; c.D.Row).copy Target.Range("A" amp; j, "O" amp; j).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False j = j 1 End If Next D With Range("H1:H5000") .NumberFormat = "General" .Value = .Value End With End Sub
Комментарии:
1.
something is wrong with my code
это нам ни о чем не говорит. Вы получаете сообщение об ошибке? Если да, то в чем ошибка? На какой линии он останавливается? Ты прошел через это?2. Извините. Я получаю ошибку со следующей строкой D, так как я добавил ДЛЯ КАЖДОГО C, и ДЛЯ КАЖДОГО D также добавляется следующая строка C. Затем я получаю ошибку. Поэтому я полагаю, что что-то не так с добавлением секунды Для каждого D . Я попытался поискать в Google, но не смог найти решение для этого.
3. Какой код ошибки вы получили? Какое описание? @МиндаугасВилимас
4. Вам не хватает
Next C
, поэтому добавьте, что послеNext D
того, как вы правильно выделите отступ в своем коде, это будет иметь большое значение.5. Я не вижу а
Next C
в вашем коде? Это должно произойти послеNext D
Ответ №1:
Подход состоит в том, чтобы выполнить a For
по строкам и проверить значение ячейки столбцов C и F в строке i
.
Sub Copyrow() Dim j As Long Dim Source As Worksheet Dim Target As Worksheet Dim lRow As Long Set Source = ActiveWorkbook.Worksheets("Main DATA") Set Target = ActiveWorkbook.Worksheets("Second Data") lRow = Source.Cells(Source.Rows.Count, "F").End(xlUp).Row 1 j = Target.Cells(Target.Rows.Count, 2).End(xlUp).Row Dim i As Long For i = 1 to lRow If Source.Cells(i, 6).Value = "PMC" And Source.Cells(i,3).Value = "PRM" Then Source.Range(Replace("A#:O#","#",i)).Copy Target.Range(Replace("A#:O#","#", j).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False j = j 1 End If Next i With Target.Range("H1:H5000") .NumberFormat = "General" .Value = .Value End With End Sub