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

Вход

Регистрация

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

 

= Мир MS Excel/Как найти в столбике слова, которые часто повторяются? - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Как найти в столбике слова, которые часто повторяются?
AdwordsDirect Дата: Вторник, 07.03.2017, 12:36 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день, многоуважаемые!

В столбике есть овер 100500 ячеек с предложениями из 2-3 слов.
Нужно из всех этих ячеек найти слова, которое чаще всех повторяются.
И сделать мини-рейтинг из ТОП 300 таких слов.

Пример не получается прилепить к письму, т.к. файл слишком большой, а на маленьком показывать не интересно :)


Сообщение отредактировал AdwordsDirect - Вторник, 07.03.2017, 12:37
 
Ответить
СообщениеДобрый день, многоуважаемые!

В столбике есть овер 100500 ячеек с предложениями из 2-3 слов.
Нужно из всех этих ячеек найти слова, которое чаще всех повторяются.
И сделать мини-рейтинг из ТОП 300 таких слов.

Пример не получается прилепить к письму, т.к. файл слишком большой, а на маленьком показывать не интересно :)

Автор - AdwordsDirect
Дата добавления - 07.03.2017 в 12:36
Perfect2You Дата: Вторник, 07.03.2017, 13:36 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
Чем разделены? Всегда одним пробелом или возможны варианты?
 
Ответить
СообщениеЧем разделены? Всегда одним пробелом или возможны варианты?

Автор - Perfect2You
Дата добавления - 07.03.2017 в 13:36
AdwordsDirect Дата: Вторник, 07.03.2017, 13:58 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Всегда одним пробелом, спасибо, что откликнулись.

Хотелось бы знать, сколько раз повторяется слово определенное?


Сообщение отредактировал AdwordsDirect - Вторник, 07.03.2017, 14:39
 
Ответить
СообщениеВсегда одним пробелом, спасибо, что откликнулись.

Хотелось бы знать, сколько раз повторяется слово определенное?

Автор - AdwordsDirect
Дата добавления - 07.03.2017 в 13:58
AdwordsDirect Дата: Вторник, 07.03.2017, 15:23 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Форумчанины, нужна помощь.


Сообщение отредактировал AdwordsDirect - Вторник, 07.03.2017, 16:34
 
Ответить
СообщениеФорумчанины, нужна помощь.

Автор - AdwordsDirect
Дата добавления - 07.03.2017 в 15:23
buchlotnik Дата: Вторник, 07.03.2017, 17:06 | Сообщение № 5
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Вам
Цитата
показывать не интересно
, а нам, думаете, интересно вслепую с нуля файл-пример валять?


Сообщение отредактировал buchlotnik - Вторник, 07.03.2017, 17:07
 
Ответить
СообщениеВам
Цитата
показывать не интересно
, а нам, думаете, интересно вслепую с нуля файл-пример валять?

Автор - buchlotnik
Дата добавления - 07.03.2017 в 17:06
Manyasha Дата: Вторник, 07.03.2017, 17:38 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Цитата AdwordsDirect, 07.03.2017 в 12:36, в сообщении № 1 ()
И сделать мини-рейтинг из ТОП 300 таких слов

вариант макроса (работает на выделенном диапазоне):
[vba]
Код
Sub WordsRating()
    Dim data As Range, i&, temp, cell, dic As Object, res As Worksheet
    Dim dKeys, dItems
    If Not Intersect(ActiveSheet.UsedRange, Selection) Is Nothing Then
        If Selection.Count > 1 Then
            Set data = Intersect(ActiveSheet.UsedRange, Selection)
        Else
            Set data = Selection
        End If
        Set dic = CreateObject("scripting.dictionary")
        For Each cell In data
            temp = Split(cell, " ")
            If UBound(temp) >= 0 Then
                For i = 0 To UBound(temp)
                    If Trim(temp(i)) <> "" Then dic(Trim(temp(i))) = dic(Trim(temp(i))) + 1
                Next i
            End If
        Next cell
        Set res = ActiveWorkbook.Sheets.Add
        With res
            dKeys = dic.keys
            dItems = dic.items
            For i = 0 To UBound(dKeys)
                .Cells(i + 1, 1).Value = dKeys(i)
                .Cells(i + 1, 2) = dItems(i)
            Next i
            .Sort.SortFields.Clear
            .Sort.SortFields.Add Key:=Range("b1:b" & i) _
                , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            With .Sort
                .SetRange Range("A1:B" & i)
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
            If UBound(dKeys) >= 300 Then .Range("a301:b" & i).ClearContents
        End With
    End If
End Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Вторник, 07.03.2017, 22:31
 
Ответить
Сообщение
Цитата AdwordsDirect, 07.03.2017 в 12:36, в сообщении № 1 ()
И сделать мини-рейтинг из ТОП 300 таких слов

вариант макроса (работает на выделенном диапазоне):
[vba]
Код
Sub WordsRating()
    Dim data As Range, i&, temp, cell, dic As Object, res As Worksheet
    Dim dKeys, dItems
    If Not Intersect(ActiveSheet.UsedRange, Selection) Is Nothing Then
        If Selection.Count > 1 Then
            Set data = Intersect(ActiveSheet.UsedRange, Selection)
        Else
            Set data = Selection
        End If
        Set dic = CreateObject("scripting.dictionary")
        For Each cell In data
            temp = Split(cell, " ")
            If UBound(temp) >= 0 Then
                For i = 0 To UBound(temp)
                    If Trim(temp(i)) <> "" Then dic(Trim(temp(i))) = dic(Trim(temp(i))) + 1
                Next i
            End If
        Next cell
        Set res = ActiveWorkbook.Sheets.Add
        With res
            dKeys = dic.keys
            dItems = dic.items
            For i = 0 To UBound(dKeys)
                .Cells(i + 1, 1).Value = dKeys(i)
                .Cells(i + 1, 2) = dItems(i)
            Next i
            .Sort.SortFields.Clear
            .Sort.SortFields.Add Key:=Range("b1:b" & i) _
                , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            With .Sort
                .SetRange Range("A1:B" & i)
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
            If UBound(dKeys) >= 300 Then .Range("a301:b" & i).ClearContents
        End With
    End If
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 07.03.2017 в 17:38
Perfect2You Дата: Вторник, 07.03.2017, 18:43 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
Manyasha! Браво!
Давно чувствую, что пора подружиться с Dictionary. Они шустрее массивов?

Махонькое уточнение.
Проверил. Не захватывает предложения из одного слова. Предлагаю вместо
[vba]
Код
If UBound(temp) > 0 Then
[/vba]
Чуточку по-другому:
[vba]
Код
If UBound(temp) >= 0 Then
[/vba]
Тогда предложения из одного слова тоже обработаются.
 
Ответить
СообщениеManyasha! Браво!
Давно чувствую, что пора подружиться с Dictionary. Они шустрее массивов?

Махонькое уточнение.
Проверил. Не захватывает предложения из одного слова. Предлагаю вместо
[vba]
Код
If UBound(temp) > 0 Then
[/vba]
Чуточку по-другому:
[vba]
Код
If UBound(temp) >= 0 Then
[/vba]
Тогда предложения из одного слова тоже обработаются.

Автор - Perfect2You
Дата добавления - 07.03.2017 в 18:43
AdwordsDirect Дата: Вторник, 07.03.2017, 19:19 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 148
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Благоадарю
 
Ответить
СообщениеБлагоадарю

Автор - AdwordsDirect
Дата добавления - 07.03.2017 в 19:19
Manyasha Дата: Вторник, 07.03.2017, 22:31 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Perfect2You, спасибо за важную правку!) Внесла в предыдущий пост.
Dictionary. Они шустрее массивов?

лично не проверяла, но думаю, что да.
На форуме, кстати, есть хорошая тема Dictionary и Collection - это совсем не сложно!


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеPerfect2You, спасибо за важную правку!) Внесла в предыдущий пост.
Dictionary. Они шустрее массивов?

лично не проверяла, но думаю, что да.
На форуме, кстати, есть хорошая тема Dictionary и Collection - это совсем не сложно!

Автор - Manyasha
Дата добавления - 07.03.2017 в 22:31
  • Страница 1 из 1
  • 1
Поиск:

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