Страницы: 1
RSS
Выделить слова из списка фраз, Как выделить отдельные слова из списка фраз
 
Добрый день

Есть список фраз в эксель (семантика). Фразы не повторяются, но повторяются слова в них.
Как из этого списка фраз сделать список слов (желательно с учетом окончаний, но не обязательно, т.е. Беларуси и Беларусь в одно слово в идеале)
Должно выглядить как-то так:

как есть:
гироскутер   купить в минске
гироскутер   купить
купить   гироскутер в беларуси
гироскутер   купить в минске недорого
сколько стоит   гироскутер
гироскутер   цена
гироскутер   цена в беларуси
гироскутер   фото
купить   гироскутер в минске в рассрочку
гироскутер   минск
сколько стоит   гироскутер в беларуси
заказать   гироскутер
купить   гироскутер недорого
дешевые   гироскутеры
гироскутер   видео
гироскутер   купить в рб
как хотелось бы, чтобы было

гироскутер
купить
беларси
минске
сколько
цена
стоит
фото
рассрочку
в
заказать
недорого
дешевые
видео
рб
 
Вариант на Power Query:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}}),
    #"Добавлен пользовательский объект" = List.Distinct(List.Union(Table.AddColumn(#"Измененный тип", "Список", each Text.Split([Столбец1], " "))[Список])),
    #"Преобразовано в таблицу" = Table.FromList(#"Добавлен пользовательский объект", Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Преобразовано в таблицу", each ([Column1] <> " "))
in
    #"Строки с примененным фильтром"

если у вас Excel 2016 или 2010-2013 с установленной надстройкой Power Query, то в синенькую табличку вставляете текст, потом правый клик по зелененькой табличке и выбираете Обновить.
Изменено: PooHkrd - 13.04.2018 13:24:31 (Слека подправил скрипт - убрал дубли из результата)
Вот горшок пустой, он предмет простой...
 
UDF. вводить как формулу массива
Код
Function UNIQUEWORD(Rng As Range) As Variant
Dim tmpArray(), unArray$(), iStr, I&, J&, S&, N&
On Error Resume Next
tmpArray = Rng.Value
ReDim unArray$(0 To Application.Caller.Rows.Count, 0 To 0)
With New Collection
    For I = LBound(tmpArray, 1) To UBound(tmpArray, 1)
        For J = LBound(tmpArray, 2) To UBound(tmpArray, 2)
            iStr = Split(Trim(Replace(tmpArray(I, J), Chr(160), "")))
            For S = 0 To UBound(iStr)
                If iStr(S) <> Empty Then
                    .Add iStr(S), CStr(iStr(S))
                    If Err = 0 Then
                        unArray(N, 0) = iStr(S)
                        N = N + 1
                    Else
                        Err.Clear
                    End If
                End If
            Next
        Next
    Next
End With
UNIQUEWORD = unArray
End Function
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх