Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование столбца словосочетаний. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Преобразование столбца словосочетаний. (Формулы/Formulas)
Преобразование столбца словосочетаний.
Данил777 Дата: Четверг, 08.02.2018, 02:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте! Есть столбец словосочетаний и не только. Который нужно преобразовать в столбец с отсортированными словами из которых удалены дубли. Символ разделения является пробел. Есть ли возможность сделать такое автоматически? Если да то прошу помочь. В программе я не разбираюсь поэтому не судите строго.
К сообщению приложен файл: 6535559.xlsx(14.2 Kb)
 
Ответить
СообщениеЗдравствуйте! Есть столбец словосочетаний и не только. Который нужно преобразовать в столбец с отсортированными словами из которых удалены дубли. Символ разделения является пробел. Есть ли возможность сделать такое автоматически? Если да то прошу помочь. В программе я не разбираюсь поэтому не судите строго.

Автор - Данил777
Дата добавления - 08.02.2018 в 02:55
Pelena Дата: Четверг, 08.02.2018, 10:38 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12692
Репутация: 2794 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Здравствуйте.
Мало, что понятно из примера. Вручную покажите в файле желаемый результат


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Мало, что понятно из примера. Вручную покажите в файле желаемый результат

Автор - Pelena
Дата добавления - 08.02.2018 в 10:38
Данил777 Дата: Четверг, 08.02.2018, 12:21 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, Здравствуйте! В файле примере в столбце А - исходные данные, а в столбце В - результат. А вручную я сначала этот столбец А выделяю и разделяю функцией "текст по столбцам" разделителем использую пробел. Затем все отдельные слова что получились я копирую в один столбец. Далее его выделяю и сортирую используя функцию "сортировка от А до Я" и затем удаляю дубли. И это у меня получается столбец В. то что мне и нужно.
 
Ответить
СообщениеPelena, Здравствуйте! В файле примере в столбце А - исходные данные, а в столбце В - результат. А вручную я сначала этот столбец А выделяю и разделяю функцией "текст по столбцам" разделителем использую пробел. Затем все отдельные слова что получились я копирую в один столбец. Далее его выделяю и сортирую используя функцию "сортировка от А до Я" и затем удаляю дубли. И это у меня получается столбец В. то что мне и нужно.

Автор - Данил777
Дата добавления - 08.02.2018 в 12:21
abtextime Дата: Четверг, 08.02.2018, 15:36 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 750
Репутация: 105 ±
Замечаний: 0% ±

Excel 2010
Посмотрите (блоком сортировке в массиве не заморочился, просто дернул код из макрорекордера

Перед запуском макроса выделите ячейки в первом столбце (работает по диапазону Selection)

Результат работы пишет во второй столбец

[vba]
Код
Public Sub Разбор()

Dim W() As String
Dim A(0 To 1000) As String

Counter = 0

For i = 1 To Selection.Rows.Count

W = Split(Selection.Cells(i, 1).Value)

For j = 0 To UBound(W)

For k = 1 To Counter
If W(j) = A(k) Then Exit For
Next k

If k = Counter + 1 Then A(Counter) = W(j)
If k = Counter + 1 Then Counter = k

Next j

Next i

For i = 0 To Counter
Selection.Cells(i + 1, 2).Value = A(i)
Selection.Cells(i + 1, 2).NumberFormat = "@"
Next i

    Columns("B:B").Select
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("B1:B10000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range("B1:B10000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
[/vba]
К сообщению приложен файл: 6535559-1-.xlsm(24.7 Kb)


Сообщение отредактировал abtextime - Четверг, 08.02.2018, 15:39
 
Ответить
СообщениеПосмотрите (блоком сортировке в массиве не заморочился, просто дернул код из макрорекордера

Перед запуском макроса выделите ячейки в первом столбце (работает по диапазону Selection)

Результат работы пишет во второй столбец

[vba]
Код
Public Sub Разбор()

Dim W() As String
Dim A(0 To 1000) As String

Counter = 0

For i = 1 To Selection.Rows.Count

W = Split(Selection.Cells(i, 1).Value)

For j = 0 To UBound(W)

For k = 1 To Counter
If W(j) = A(k) Then Exit For
Next k

If k = Counter + 1 Then A(Counter) = W(j)
If k = Counter + 1 Then Counter = k

Next j

Next i

For i = 0 To Counter
Selection.Cells(i + 1, 2).Value = A(i)
Selection.Cells(i + 1, 2).NumberFormat = "@"
Next i

    Columns("B:B").Select
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("B1:B10000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range("B1:B10000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
[/vba]

Автор - abtextime
Дата добавления - 08.02.2018 в 15:36
Данил777 Дата: Четверг, 08.02.2018, 16:24 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
abtextime, Круто! Спасибо большое!
 
Ответить
Сообщениеabtextime, Круто! Спасибо большое!

Автор - Данил777
Дата добавления - 08.02.2018 в 16:24
abtextime Дата: Четверг, 08.02.2018, 16:37 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 750
Репутация: 105 ±
Замечаний: 0% ±

Excel 2010
ОК, только лучше последний фрагмент кода заменить на нормальную сортировку в массиве A (их немало можно найти) и вставить перед

[vba]
Код
For i = 0 To Counter
Selection.Cells(i + 1, 2).Value = A(i)
Selection.Cells(i + 1, 2).NumberFormat = "@"
Next i
[/vba]

Так универсальнее будет, а то макрос сильно привязан к конкретному листу и ко второму столбцу
 
Ответить
СообщениеОК, только лучше последний фрагмент кода заменить на нормальную сортировку в массиве A (их немало можно найти) и вставить перед

[vba]
Код
For i = 0 To Counter
Selection.Cells(i + 1, 2).Value = A(i)
Selection.Cells(i + 1, 2).NumberFormat = "@"
Next i
[/vba]

Так универсальнее будет, а то макрос сильно привязан к конкретному листу и ко второму столбцу

Автор - abtextime
Дата добавления - 08.02.2018 в 16:37
abtextime Дата: Четверг, 08.02.2018, 16:42 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 750
Репутация: 105 ±
Замечаний: 0% ±

Excel 2010
И, да макрос чувствителен к регистру, так что он ДОМ, Дом и дом посчитает за разные слова

Чтобы этого избежать, можно

[vba]
Код
W = Split(Selection.Cells(i, 1).Value)
[/vba]

заменить на

[vba]
Код
W = Split(LCase(Selection.Cells(i, 1).Value))
[/vba]


Сообщение отредактировал abtextime - Четверг, 08.02.2018, 16:48
 
Ответить
СообщениеИ, да макрос чувствителен к регистру, так что он ДОМ, Дом и дом посчитает за разные слова

Чтобы этого избежать, можно

[vba]
Код
W = Split(Selection.Cells(i, 1).Value)
[/vba]

заменить на

[vba]
Код
W = Split(LCase(Selection.Cells(i, 1).Value))
[/vba]

Автор - abtextime
Дата добавления - 08.02.2018 в 16:42
Данил777 Дата: Пятница, 09.02.2018, 16:53 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
abtextime, Хорошо заменю спасибо!
 
Ответить
Сообщениеabtextime, Хорошо заменю спасибо!

Автор - Данил777
Дата добавления - 09.02.2018 в 16:53
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Преобразование столбца словосочетаний. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!