Думал, думал и понял. Что модель - это целое слово, точно не имеющее дубли. Значит мне нужно оставить только эти слова. Но всё перерыл и пробовал:
Удаление дубликатов Не подходит, так как сдвигает ячейки
Дробить строчки по словам и удалять друбли после условного форматирования Не подходит, так как удаляются все экземляры слова, а нужно оставить один эземпляр слова удали все остальные.
В общем, задача такая. Как в идеале, оставить только названия товаров, убрав производителя, линейку, прочие характеристики, таким образом чтобы получившаяся методика содержала минимум ручной работы, была гибкой для разных видов товаров, ее результаты можно было отменить (Ctrl + Z).
Чтобы не сдвигать ячейки
Чтобы оставить по одному экземпляру слова, при удалении дублей
Чтобы это решение могло быть применимо к другим товарам
Нет. Столбец Б, нужен для того, чтобы потом, когда в столбце А останется только модель, модно было понять кто её производитель. Столбец Б должен остаться неизменным.
Модели, которые должны остаться я указал в примере. Вот они:
Цитата
Z360 Z330
Всё остальное в ячейке это: Производитель (Acer) Линейка моделей (Liquid) Техническая особенность (3G, 4G, 16Gb)
Хорошим решением на мой взгляд был бы такой алгоритм, но не понимаю как его реализовать за минимальное количество кликов: Выделить столбец А Найти все целый слова имеющие дубли Удалить все дубли, кроме одного экзмепляра
При этом, чтобы: Не смещать ячейки Не изменять столбец Б (чтобы потом можно было понять кто производитель у модели)
Мотя написал: Опишите алгоритм в общем случае - для любой информации
ну зачем вы так :-)? Человек старался, думал, придумывал.
vinegredz, вот ваш алгоритм в коде, без преукрас и автоматизаций.
Код
Sub test()
For Each Cell In Selection
a = Split(Cell.Value, " ")
Cell.Value = " " & Cell.Value & " "
For i = 0 To UBound(a)
If WorksheetFunction.CountIf(Selection, "*" & a(i) & "*") > 1 Then
Selection.Replace What:=" " & a(i) & " ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
If WorksheetFunction.CountIf(Selection.Offset(, 1), a(i)) = 0 Then _
Cell.Value = Cell.Value & " " & a(i)
End If
Next
Next
End Sub