2013-11-19 6 views
0

Я пытаюсь написать макрос, который скопирует строку на другой лист, если будут выполнены определенные значения. Существует несколько возможных мест назначения. Это то, что я собрал вместе, но я уверен, что это грязно. В принципе, если в столбце 14 есть «N/A», а в столбце 8 есть «APP», то скопируйте его на вкладку APP. И так далее для Энджи, Кэти и т.д.Как скопировать строку на другой лист на основе if then

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation") 
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("APP") 
Dim ws3 As Worksheet: Set ws3 = ThisWorkbook.Sheets("Angie") 
Dim ws4 As Worksheet: Set ws4 = ThisWorkbook.Sheets("Cathy") 
Dim ws5 As Worksheet: Set ws5 = ThisWorkbook.Sheets("Cory") 
Dim ws6 As Worksheet: Set ws6 = ThisWorkbook.Sheets("Curt") 

For Each i In ws1.Range("A1:A1000") 
    If ws1.Cells(i, 14) = "#N/A" Then 
     If ws1.Cells(i, 8) = "APP" Then 
      ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1) 
     End If 
    End If 
Next i 
+0

Почему цикл и не [Автофильтр] (HTTP: // StackOverflow .com/вопросы/11631363/как к копии-а-линейный-первенствует-используя-а-Specific-слово-и-склейку-к-другому-первенствовать-х)? –

ответ

0

Это будет копировать строку, если есть лист с соответствующим именем:

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation") 
Dim ws 

For Each i In ws1.Range("A1:A1000").Cells 
    If ws1.Cells(i.Row, 14).Value = cverr(2042) Then 
      Set ws = Nothing 
      On Error Resume Next 
      Set ws = ThisWorkbook.Sheets(ws1.Cells(i.Row, 8).Value) 
      on error goto 0 
      If Not ws Is Nothing Then    
       i.EntireRow.Copy ws.Rows(ws.Cells(ws.Rows.Count, 2).End(xlUp).Row + 1) 
      End If 
     on error goto 0 
    End If 
Next i 
+0

Спасибо Тим. Я ужасно новичок в этом. Можете ли вы объяснить, что происходит в вашем коде? Как насчет других листов? Как добавить следующие строки для других листов? – user3009860

+0

Вот и все. Он получает значение ячейки из столбца8 и пытается установить 'ws' на лист с таким именем (игнорируя любую ошибку, если лист не существует). Если лист существует, то 'ws' не =' Nothing' и копирует строку на этот лист. В основном это скопирует любую строку на лист в книге с тем же именем, что и значение в столбце8. Также исправлена ​​ваша проверка # N/A (если у ваших ячеек нет текста «# N/A», в этом случае вы можете вернуться к своей версии) ;-) –

+0

Спасибо Тим. Фактически это ячейка, которая имеет «N/A» в качестве результата из формулы. Я изменил значение = cverr (2042) на Value = "N/A", и я получил ошибку несоответствия типа. Какие-либо предложения? – user3009860

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