2017-02-21 12 views
1

У меня возникла проблема. То, что я пытаюсь выполнить, - сравнить четыре столбца, если ячейки совпадают, а затем вернуть две ячейки в одну строку. explaination Для примера я сравниваю как A & B от D & E с выходом F & G в той же строке. Место назначения не имеет большого значения, так как я могу его изменить. Что я сделал, только сравнивает два столбца, которые работают, но также добавляет другие ячейки, которые не должны применяться к этой конкретной строке.Сравните четыре столбца с возвратом двух столбцов?

Sub Add_XY() 
For Each cell In ThisWorkbook.Sheets("Data").UsedRange.Columns("K").Cells 
Dim offs As Long: offs = 2 ' <-- Initial offset, will increase after each match 
compareValue = cell.Value & "-" & cell.Offset(, 1).Value 
ThisWorkbook.Sheets("Data").Range("K6").Value = compareValue 
If Not compareValue = "-" Then 

For Each compareCell In ThisWorkbook.Sheets("P&T Data").UsedRange.Columns("AI").Cells 
'For Each compareCell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells 

    If compareCell.Value & "-" & compareCell.Offset(, 1).Value = compareValue Then 

    ThisWorkbook.Sheets("Data").Range("K6").Value = compareCell.Value & "-" & compareCell.Offset(, 1).Value 'test return value 
    cell.Offset(, offs).Value = compareCell.Offset(, 5).Value 
    cell.Offset(, offs + 1).Value = compareCell.Offset(, 6).Value 
    offs = offs + 4 ' <-- now shift the destination column by 4 for next match 
    Else 
    End If 

Next compareCell 

End If 

Next cell 
End Sub 
+0

Итак, можете ли вы привести пример в приведенном выше наборе данных о том, что можно считать совпадением? (Строка 2,3, 4 или 5?) И какой результат должен быть в столбцах F и G? –

+0

Есть два совпадения: арахисовое масло (A2: B2) и французский жар (A4: B4). Результатом будут следующие два столбца (F: G) в той же строке, отображаемой в столбцах I и J – Noisewater

ответ

0

Работа с данными, введенными точно так, как показано на картинке.

Sub Test() 

For Each cell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells 

    compareValue = cell.Value & "-" & cell.Offset(0, 1).Value 

    If Not compareValue = "-" Then 

    For Each compareCell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells 

     If compareCell.Offset(0, 3).Value & "-" & compareCell.Offset(0, 4).Value = compareValue Then 

     cell.Offset(0, 8) = cell.Offset(0, 5) 
     cell.Offset(0, 9) = cell.Offset(0, 6) 
     Else 
     End If 

    Next compareCell 

    End If 

Next cell 

End Sub 
+0

Я пробовал код, и я не могу заставить его работать. Если я тестирую его и устанавливаю ячейку равным compareCell, если оператор выполняется, он возвращает «-». Я обновил свой вопрос, чтобы включить то, что я сделал. – Noisewater

+0

Я узнал, почему он не работает. В одном столбце были ведущие пробелы. Обрезано и все установлено. Благодаря! – Noisewater

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