необходимо сравнить два столбца в Excel и поместить несколько ссылок в одну ячейку

#excel

#excel

Вопрос:

Я ищу формулу Excel для приведенного ниже требования:

У меня есть два листа, в которых лист1 содержит следующие данные:

Столбец 1 содержит: R1, R1, R1, R2, R2, R3, R3, R4 Столбец 2 содержит: T1, T2, T3, T4, T5, T6, T7, T8

На втором листе содержатся следующие данные:

Столбец 1 содержит: R1, R2, R3, R4 Теперь в столбце 2 я ожидаю вывода в виде T1, T2, T3 для R1 T4, T5 для R2 T6, T7 для R3 T8 для R4

Примечание: мне нужно было бы поместить T1, T2, T3 в одну ячейку. Аналогично для других совпадающих значений.

В настоящее время я использую приведенную ниже формулу:

=INDEX(‘Sheet’!1A3:A100, MATCH(A3, ‘Sheet2’!A3:A100, 0)) Для приведенной выше формы я получаю вывод в виде:

Столбец 1: R1, R2 Столбец 2: T1, T2

Спасибо за поддержку!

Ответ №1:

Код VBA будет делать то, что вам требуется, вот пример, который даст нужные вам результаты. На что следует обратить внимание:

Столбцы не имеют заголовков

Листы называются Лист1 и Лист2

Данные в столбце A листа 1 должны быть в порядке возрастания или убывания, поскольку этот макрос не будет работать, если обрабатываемые значения не сгруппированы вместе.

Изменить по мере необходимости:

 Sub ExampleMacro()

Dim LastRow As Integer
Dim CurrentRow As Integer
Dim i As Integer
Dim RefResult

With Sheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

CurrentRow = 1
For i = 1 To LastRow

If Sheets("Sheet2").Range("A1").Value = Sheets("Sheet1").Range("A" amp; CurrentRow).Value Then    
Sheets("Sheet2").Range("B1").Value = RefResult 
Else

If Sheets("Sheet2").Range("A1").Value <> Sheets("Sheet1").Range("A" amp; CurrentRow).Value Then
RefResult = Sheets("Sheet1").Range("B" amp; CurrentRow).Value
Sheets("Sheet2").Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Sheets("Sheet2").Range("A1").Value = Sheets("Sheet1").Range("A" amp; CurrentRow).Value    
Sheets("Sheet2").Range("B1").Value = RefResult    
Else
End If

End If

CurrentRow = CurrentRow   1
RefResult = RefResult amp; ", " amp; Sheets("Sheet1").Range("B" amp; CurrentRow).Value

Next I

End Sub
  

Комментарии:

1. Большое вам спасибо за решение. Но поскольку я не предполагаю использовать макросы, есть ли какой-либо другой способ, который может решить мою проблему? Спасибо за помощь 🙂