необходимо сравнить два столбца в 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
Теперь в Column2 я ожидаю выхода как
T1, T2, T3 для R1
T4, T5 для R2
T6, T7 для R3
T8 для R4

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

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

=Индекс (‘Sheet’!1A3: A100, MATCH(A3, ‘Sheet2’!A3:A100, 0))
Для выше formale я получаю выход положить как:

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

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

1 ответ

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

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

    Листы называются Sheet1 и Sheet2

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

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

    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" & CurrentRow).Value Then    
    Sheets("Sheet2").Range("B1").Value = RefResult 
    Else
    
    If Sheets("Sheet2").Range("A1").Value <> Sheets("Sheet1").Range("A" & CurrentRow).Value Then
    RefResult = Sheets("Sheet1").Range("B" & CurrentRow).Value
    Sheets("Sheet2").Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("Sheet2").Range("A1").Value = Sheets("Sheet1").Range("A" & CurrentRow).Value    
    Sheets("Sheet2").Range("B1").Value = RefResult    
    Else
    End If
    
    End If
    
    CurrentRow = CurrentRow + 1
    RefResult = RefResult & ", " & Sheets("Sheet1").Range("B" & CurrentRow).Value
    
    Next I
    
    End Sub