Excel 2 Для в 1

#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