2015-06-22 3 views
0

У меня есть 2 таблицы, которые я сравниваю. Идентификаторы, которые не отображаются на листе 2, которые находятся в листе 1, копируются на другой лист.Добавить определенную строку в последний столбец данных

Для этих строк данных я пытаюсь добавить столбец во главе «отсутствует» и вставить «отсутствует лист 2» в колонке в конце строки данных

например текущий лист выглядит следующим образом:

i.d | Department| Sales | Date 
1  | i.t  | 100 | 01/01/2015 
2  | i.t  | 200 | 

я хочу:

i.d | Department| Sales | Date  |Missing 
1  | i.t  | 100 | 01/01/2015 |from sheet 2 
2  | i.t  | 200 |   |from sheet 2 

Это мой текущий код (который копирует все строки, которые отсутствуют):

'ID missing from sheet 2 
     id.EntireRow.Copy 
     missingids.PasteSpecial xlPasteValuesAndNumberFormats 
     Application.CutCopyMode = False 
     Set missing_output = missingids.Offset(RowOffset:=1) 

Спасибо!

+1

Чтобы уточнить, что вы хотите, если идентификатор находится в листе 1, но не в sheet2 вы хотите скопировать ID и строку деталь из листа 1 в отдельный лист и добавить дополнительный столбец с именем 'missing' с описание 'из листа 2'? –

+0

@Alex P да, это правильно – Tony

+0

Вы используете ** Таблицы ** или просто ячейки? – Raystafarian

ответ

0

Это может помочь вам приступить к работе. Этот код работает следующим образом:

  1. перебрать идентификаторы в sheet1 и проверить, если не нашли в sheet2
  2. Если не найдены, скопируйте данные для этого ID в колонках А для D в sheet3
  3. В колонке E добавить "from sheet 2"

Изменить код в соответствии с вашими нуждами.

Sub CopyMissingRows() 
    Dim idMasterList As Range, idCompareList As Range, id As Range, found As Range, rw As Integer 

    Set idMasterList = Worksheets("Sheet1").Range("A2:A10") 
    Set idCompareList = Worksheets("Sheet2").Range("A2:A10") 
    rw = 2 

    For Each id In idMasterList 
     Set found = idCompareList.Find(What:=id, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 

     If found Is Nothing Then 

      With Worksheets("Sheet3") 
       .Range("A" & rw) = id    ' ID 
       .Range("B" & rw) = id.Offset(0, 1) ' Department 
       .Range("C" & rw) = id.Offset(0, 2) ' Sales 
       .Range("D" & rw) = id.Offset(0, 3) ' Date 
       .Range("E" & rw) = "from sheet 2" ' Missing 
      End With 

      rw = rw + 1 
     End If 
    Next id 
End Sub 
Смежные вопросы