2013-04-04 2 views
0

У меня есть рабочий лист Excel («Все документы»), который заполняется из списка SharePoint, но также содержит несколько столбцов, содержащих формулы. У меня есть другой рабочий лист в той же книге («Оригинал»), которая содержит исходные значения элементов списка. Мне нужно сравнить два листа, и если значение в столбце A в «Все документы» не существует в столбце A в «Оригинале», ему необходимо скопировать строку на «Оригинальный» лист. Он должен быть вставлен как значения. Я искал много форумов и пробовал много предложений, но никто не работал. Это моя последняя попытка. Любая помощь будет оценена!Скопируйте строку из таблицы excel в другую, если нет соответствия

Dim x As Long, y As Long, a As Long 
Dim b As String 
Dim rFound As Range 
Dim TargetRange As Range 
x = Worksheets("All Documents").Range("A" & Rows.Count).End(xlUp).Row 
For a = 2 To x 
    y = Worksheets("Original").Range("A" & Rows.Count).End(xlUp).Row 
    b = Worksheets("All Documents").Range("A" & a) 
    If a > y Then Exit For 
    With Worksheets("Original").Range("A:A") 
     Set rFound = .Find(b, LookIn:=xlValues) 
     If rFound Is Nothing Then 
      TargetRange = Worksheets("Original"1).Cells(Worksheets("Original").Rows(y + 1)) 
      Worksheets("All Documents").Rows(a).Copy 
      TargetRange.PasteSpecial xlPasteValues 
     End If 
    End With 
Next a 
+0

Что не работает о вашем коде? – LostLin

+0

Единственное, что сразу привлекло мое внимание, это «TargetRange = Worksheets (« Original »1) ...« Должно быть «Set TargetRange = Worksheets (« Original »1) ....' Rest as @CAPSLOCK, упомянутый, давайте знаете, какая часть кода не работает. –

ответ

0

Три вещи,

  1. Чтобы установить диапазон вам нужно:

    Set TargetRange = Worksheets("Original").Rows(y + 1) 
    
  2. Проверьте, если лист Мента быть "Original"1 или "Original"

  3. И улучшение копирует ваши значения:

    Worksheets("Original").Rows(y + 1).Value = _ 
        Worksheets("All Documents").Rows(a).Value 
    
+0

Спасибо за ваши комментарии. 1 in («Оригинал» 1) был опечаткой, когда я скопировал код. Я попытался предложить на шаге 3 выше, и я получаю ошибку времени выполнения «9»: подстрочный индекс. Значение y = 667, которое представляет собой количество строк в «Оригинале». Значение a = 104. В «Все документы» имеется 730 строк. Я попробовал еще раз и получил ошибку времени выполнения «5»: неверный вызов или аргумент процедуры. Я подтвердил, что как лист адресата, так и определенная таблица имеют название «Оригинал». Исходный лист называется «Все документы», но определенная таблица - «ALLDocuments». Это проблема? – mbear

+0

Попробуйте сейчас. Копирование строки в строку, вам не нужна функция ячеек. – glh

+0

Это сработало! Спасибо!! Извините за задержку в ответе. Это один из многих проектов. – mbear

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