Страницы: 1
RSS
Удаление повторов внутри ячейки, учитывая условия
 
Добрый день.

Подскажите пож-та в какую сторону копать, пример файла во вложении. Имеется информация об автомобилях: столбцы A-E. Нашел пользовательскую формулу, которая сцепляет данные из выбранного диапазона через выбранный разделитель и без повторов (в моем случае повторы - это столбцы без данных). В столбце G сейчас прописал, как должно получится:
строка 1, бренд VW встретился три раза, но остаться в итоговом названии столбца G должен один раз, бренд Audi встретился 2 раза, но остаться в итоговом столбце должен один раз.

Нашел пользовательскую формулу удалить дубликаты, которая использует словарь, но в моем случае она не корректно работает, т.к. убирает где-то год автомобиля, т.е. если ее применить для первой строки, то получается вот такой вариант: VW Polo 95-, Passat Golf 96-, Audi A4 TT 98-
Заранее спасибо.
Изменено: so easy - 04.05.2021 17:48:58 (не верные данные указал в файле)
 
Результат в столбец Н
Код
Sub iConcatenate()
Dim i As Long
Dim iLastRow As Long
Dim j As Integer
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
 Range("H2:H" & iLastRow).ClearContents
  For i = 2 To iLastRow
     Cells(i, 8) = Cells(i, 1)
    For j = 1 To 4
     If Cells(i, j + 1) <> "" Then
      If Split(Cells(i, j), " ")(0) = Split(Cells(i, j + 1), " ")(0) Then
        Cells(i, 8) = Cells(i, 8) & " ; " & Split(Cells(i, j + 1), " ", 2)(1)
      Else
        Cells(i, 8) = Cells(i, 8) & "; " & Cells(i, j + 1)
      End If
     End If
    Next
 Next
End Sub
 
UDF
Код
Function Main_szep(rn As Range)
    Dim sl: Set sl = CreateObject("Scripting.Dictionary")
    Dim u, cel, i, brend
    For Each cel In rn.Cells
        If Len(cel) > 0 Then
            u = Split(cel, " ", 2)
            brend = u(0)
            If sl.exists(brend) Then
                sl(brend) = sl(brend) & ", " & u(1)
            Else
                sl(brend) = brend & " " & u(1)
            End If
        End If
    Next
    Main_szep = Join(sl.items, ", ")
    
End Function
 
Kuzmich, Александр Моторин, огромное спасибо за помощь!
Страницы: 1
Читают тему (гостей: 1)
Наверх