2013-11-13 3 views
0

При добавлении новой строки в рабочий лист в Excel я ищу, чтобы, если столбцы D и E существуют вместе в столбцах D и E другой существующей строки, столбец F от что существующая строка копируется в столбец F в новой строке.Копирование дубликатов строк в Excel на основе состояния столбца

A B C D E F 
    A B C D E F 
    A B C D E F 
NEW NEW NEW NEW NEW NEW 

Можно ли это сделать с использованием функции IF или ее легче производить в VBA?

+0

Таким образом, новый ** F ** подоконник будет связан со старым ** E **? –

+0

Извинения - я отредактировал. Существующий F должен быть связан с новым F – Byate

+0

[Вы пробовали любой подход?] (Http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) Если да, то что сработало, т работы? Я бы сказал, что самым простым путем было бы использовать формулу 'IF' в колонке' F' для достижения этой цели. – ARich

ответ

0

Попробуйте этот небольшой макрос:

Sub dural() 
    Dim N As Long 
    N = Cells(Rows.Count, "D").End(xlUp).Row 
    Dim i As Long 
    d = Cells(N, "D").Value 
    e = Cells(N, "E").Value 

    For i = N - 1 To 1 Step -1 
     dt = Cells(i, "D").Value 
     et = Cells(i, "E").Value 
     If d = dt And e = et Then 
      MsgBox "match found" 
      Cells(N, "F").Value = Cells(i, "F").Value 
     Exit Sub 
     End If 
    Next i 
    MsgBox "no match found" 
End Sub 

Так сначала налить в обеих клетках E и D в новой строке, а затем запустить макрос.

+0

Большое спасибо за то, что указали мне в правильном направлении - он работает до тех пор, пока не появится окно сообщения. К сожалению, он не копировал значение из F в новую строку F. Будет играть с ним и посмотреть, смогу ли я заставить его работать в моей таблице! – Byate

+0

Работы очарования, на самом деле, спасибо! Как мне изменить 'For i' на' 'Для каждого'? – Byate

0

Вы можете использовать формулу для создания вспомогательного столбца, который может найти соответствующие значения.

Формула должна быть определена как формула массива, так как нам нужно вернуть массив из совпадений первой проверки, чтобы мы могли иметь массив, готовый ко второму тесту.

Во-первых, мы создаем массив из первого теста, а затем только дают значения во втором столбце, которые соответствуют спичек в первом столбце: IF($E$1:$E$10=E1,$D$1:$D$10)

затем из этого массива, мы ищем для нашего второго значение, и получить позицию: MATCH(D1,TheArray,0)

от этого значения, мы затем посмотреть в колонке F для значения соответствия: INDEX($F$1:$F$10,ThePosition)

Полагая, что все в одну формулу дает

=INDEX($F$1:$F$10,MATCH(D1,IF($E$1:$E$10=E1,$D$1:$D$10),0)) 

Не нажимайте кнопку ввода еще - помните, мы должны позволить excel знать, что это формула массива? Чтобы сделать это, вместо того, чтобы просто нажать войти, нажмите CTRL + SHIFT + ENTER - если вы сделали это правильно, вы должны быть вознаграждены {} вокруг формулы:

{=INDEX($F$1:$F$10,MATCH(D1,IF($E$1:$E$10=E1,$D$1:$D$10),0))} 

Вы можете затем либо скрыть столбец F, либо скопировать значения из вспомогательного столбца по столбцу F в ваши данные.

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