2016-08-12 2 views
1

Существует 2 отдельных таблицы - PT_Data и подозрительные. Каждая таблица имеет имя Emp_Name в качестве первого столбца, а второй столбец является переменной. Я хочу сопоставить Emp_Name из PT_Data с именами в подозреваемых и обновить соответствующее значение из таблицы Suspects до столбца B в таблице PT_Data.Использование цикла для копирования данных сопоставления

Это код, который я написал.

  lastrowall = Sheets("Monthly Deals").Range("A1", Sheets("Monthly Deals").Range("A" & Rows.Count).End(xlUp)).Rows.Count 
      lastrowsuspects = Sheets("Suspects").Range("A1", Sheets("Suspects").Range("A" & Rows.Count).End(xlUp)).Rows.Count 


      For i = 1 To lastrowall 
      For j = 1 To lastrowsuspects 
       'MsgBox Sheets("PT_Data").Range("A" & i).Value 
        If Sheets("PT_Data").Range("A" & i).Value = Sheets("Suspects").Range("A" & j).Value Then 
        Sheets("Suspects").Range("B" & j).Copy Destination:=Sheets("PT_Data").Range("B" & i).PasteSpecial 
       End If 
      Next j 
      Next i 

Однако, если совпадение найдено, VB дает определение «Определенная заявка или объектная ошибка». Есть предположения?

ответ

1

Изменить

Sheets("Suspects").Range("B" & j).Copy Destination:=Sheets("PT_Data").Range("B" & i).PasteSpecial

Для

'~~> To paste values 
Sheets("Suspects").Range("B" & j).Copy 
Sheets("PT_Data").Range("B" & i).PasteSpecial xlPasteValues 

или Вставить все использовать

Sheets("Suspects").Range("B" & j).Copy _ 
Destination:=Sheets("PT_Data").Range("B" & i) 

BTW вы можете использовать формулы для этого. VBA Не требуется. Используйте Vlookup, как показано ниже. Поместите эту формулу в ячейку B1 PT_Data и перетащите ее.

=VLOOKUP(A1,Suspects!A:B,2,0) 
+1

Woohoo! работает как шарм! Спасибо тонну, Сиддхарт! – Tanmoy

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