2014-10-30 9 views
1

То, что я пытаюсь сделать, это просто скопировать информацию с одного листа на другой на основе содержимого ячейки. В принципе, если число из столбца A, лист 1 соответствует числу в столбце A, лист 2, я бы хотел, чтобы он копировал всю строку из листа 2 поверх листа 1 с двумя ячейками, расположенными рядом с, в строке, в которой он сопоставлен.Копирование ячеек между двумя листами

Любая помощь была бы принята с благодарностью! Пожалуйста, дайте мне знать, если вам нужно больше разъяснений.

ПСЕВДО

For i = 1 to EndofColumnInSheet1 
     if (There is a match with xNumber in sheet 2) 
      { 
       Copy entire row in Sheet 2 beside matching row in Sheet 1 
      } 

     else 
      { 
       Keep entire row empty. 
       AKA Skip this row. 
      } 

ответ

1

Этот простой цикл, кажется, бежит довольно быстро.

Dim r As Long, cc As Long, cr As Long, ws1 As Worksheet, ws2 As Worksheet 
Set ws1 = Sheets("Sheet10") 
Set ws2 = Sheets("Sheet11") 

With ws1 
    For r = 1 To .Cells(Rows.Count, 1).End(xlUp).Row 
     If CBool(Application.CountIf(ws2.Columns(1), .Cells(r, 1).Value)) Then 
      cr = Application.Match(.Cells(r, 1).Value, ws2.Columns(1), 0) 
      cc = ws2.Cells(cr, Columns.Count).End(xlToLeft).Column 
      .Cells(r, 4).Resize(1, cc) = ws2.Cells(cr, 1).Resize(1, cc).Value 
     Else 
      'do nothing 
     End If 
    Next r 
End With 

Set ws2 = Nothing 
Set ws1 = Nothing 
+0

большое спасибо! – rmdlp

+0

Как вы думаете, я бы хотел изменить это, чтобы он копировал только определенное значение ячейки в исходный лист? – rmdlp

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