Страницы: 1
RSS
Поиск одинаковых слов в строке
 
Всех приветствую!

Ребята, хелп ми плиииизззз:)

Есть файл с одинаковыми словами в названии товара в одной ячейке, необходимо вычленить эти повторяющиеся слова (это могут быть как слова, так и числа) в соседнюю ячейку через точку запятой. Потом оператор проходится по этим позициям и принимает решение, какие именно слова и из какой части необходимо удалить, чтобы получить более менее нормальное название товара без повторений слов.
Как это можно реализовать?
 
Это можно реализовать, но не в png файле.
По вопросам из тем форума, личку не читаю.
 
БМВ, понял, файл прикрепляю.
 
Уупс, а вот про "для кошек" не углядел, получается что дублирование не слов, а фраз, и задача переходит в уровень VBA. Фолмула будет громоздкой и ограничена фиксированным максимальным количеством повторений, да и учесть уникальные , предлоги - это отдельная история.

для примера и это не полное решение и еще часть спряталась в именах
Изменено: БМВ - 03.12.2019 23:17:25
По вопросам из тем форума, личку не читаю.
 
dsg, как у БМВ выше и ещё то:
Цитата
БМВ написал:
и задача переходит в уровень VBA

... и совсем в не так простой ...
Выделить (извлечь, экстрагировать) слова не проблема, проблема состоит в том, чтобы проверить, какие комбинации слов образуют фразу.
Что если, например есть такая "вещь":
(извините "за иностранный акцент" ... :) ... это только вольна / свободна / привольна (?) интерпретация - легче писать без хорошего владения языком)

"Прошэк '300 гр дла' ко 'кошэк бэз' млэка 'дла кошэк бэз' хлэба потрошэ за '300 гр'"

Что тут будет фразой, а что нет:

1. "300 гр дла" и "дла кошэк бэз" => мы дублируем "для" ?
или
3. "300 гр дла" и "кошэк бэз"
или
2. "300 гр" и "дла кошэк бэз"

или ещё по другому если возможно ?

 
dsg, Вот здесь есть решение (способ 3): https://www.planetaexcel.ru/techniques/7/7991/
 
БМВ, ocet p, тут самое главное, чтобы данные вышли в отдельную колонку, так сказать обратить внимание человека, что в этом названии есть дублирующиеся слова - оператор это видит и уже самостоятельно проверяет и корректирует название по-правильному, без дублей.

msi2102, оказывается уже было готовое решение, спасибо за ссылку!

БМВ, ocet p и msi2102, благодарю Вас за оперативную и качественную помощь! :D  
 
msi2102, не совсем так, там нет анализа фраз, а также   такие варианты "цветочек"для, без разделительного пробела …..
По вопросам из тем форума, личку не читаю.
 
БМВ, ну если не подойдет, значит вернется, тогда будем думать  :D . К тому же никто не отменял Ctrl+H. А может сам сумеет доработать.
Изменено: msi2102 - 04.12.2019 10:21:16
 
Цитата
dsg написал:
чтобы данные вышли в отдельную колонку
dsg, вы поблагодарили меня ни за что ... так, от меня, что-то такое, может подойти вам для чего-то (?):
Код
Option Explicit

Sub abc()
    Dim txt$, i&, r&, arr
    r = 2
    arr = Array("!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "-", "+", "=", "\", "/", "|", "?", "<", ">", _
                "~", "`", ",", ".", ":", ";", """", "'", "{", "[", "}", "]") '=> ??? eto dlya sluchaya takikh fraz kak 'Triol' i '/TRIOL/'
    Do Until Trim(Cells(r, "A").Value) = ""
        txt = Application.Trim(Cells(r, "B").Text)
        For i = 0 To UBound(arr)
            txt = Replace(txt, arr(i), "", 1, -1, 1)
        Next
        Cells(r, "C").Value = abc_xyz(txt)
        r = r + 1
    Loop
End Sub

Function abc_xyz(txt$)
    Dim rslt$, tmp$, ar, pos
    ar = Split(txt, " ", -1, 1)
    Do While UBound(ar) > -1
        tmp = ar(0)
        ar(0) = ""
        pos = Application.Match(tmp, ar, 0)
        If Not IsError(pos) Then
            rslt = IIf(rslt = "", tmp, rslt & "; " & tmp) '<=zdes' vy mozhete izmenit' razdelitel' pri neobkhodimosti
            Do While Not IsError(pos)
                ar(pos - 1) = ""
                pos = Application.Match(tmp, ar, 0)
            Loop
        End If
        ar = Split(Application.Trim(Join(ar, " ")), " ", -1, 1)
    Loop
    abc_xyz = rslt
End Function

У меня (для латиницы) это работает.
Страницы: 1
Наверх