Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Извлечение ключевых сущностей используя VBA

Ответить
Настройки темы
2010 - Извлечение ключевых сущностей используя VBA

Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: r-studio
Дата: 15-10-2018
Тело текста - это названия продуктов из чека (GOODS_NAME)
Я хочу сгруппировать любые похожие слова.

суть в том, что некоторые фразы имеют однокоренные слова и как бы ключевые слова.
Например вот документе
слово Макаронные изделия Макфа улитки флоу-пак 450 г. и подобное ему
Я нашел 7 строк с

Макароны макфа
Макароны макфа
Макароны макфа
Макароны макфа
Макароны макфа
Макароны макфа
Макароны макфа
(иногда транслит makfa, pechenie)


Я вручную нашел слова, у который похожие корни

если я делаю так, т.е. вложенный цикл для проверки уникальных / дублированных элементов., то получаю ошибку компиляции
Код: Выделить весь код
for lRow = 1 to lLastRow
  sString1 = range("A" & lrow).value
  bFlag = false
  for lRow2 = lrow+1 to lLastRow
     sString2 = range("A" & lrow2).value
     if sstring1 = sstring2 then
        bflag = true 'values match
        'do something with matching values
        exit for
     end if
   next lrow2
next lrow
Как мне правильно выделить одинаковые слова.
При этом я понимаю, что идеального кода тут и быть не может, т.е. как Я он не сделает, ну хотя бы приблизительно.

Отправлено: 13:28, 18-09-2018

 

Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата r-studio:
Как мне правильно выделить одинаковые слова. »
На форуме это обсуждалось много раз: какие слова считать похожими? Наименования "Творог деревен." и "Колбаски деревен." - похожи (если нет - как об этом должен узнать алгоритм)? Как быть с предлогами и сокращениями: "сосиски с сыром", "паштет из печени" - они встретятся в "салями" и "газета известия" и т.д. Как быть, если в наименовании встретятся одновременно два разных ключевых слова? Чем "Makfa" похожа на "Макфа" и т.д.
Цитата r-studio:
то получаю ошибку компиляции »
Приложите скрин этой ошибки и укажите, на какую строку ругается. Вы приложили кусок кода, скопируйте его целиком. У меня на ваш отрывок ошибок не выскакивало.
Цитата r-studio:
Например вот документе »
Код явно написан не под этот документ - он сравнивает ячейки первого столбца, точнее - их значения целиком. Предполагается, что вы для каждой ячейки будете указывать ключевые слова вручную? Тогда их можно отфильтровать, или использовать штатные функции excel для подсчета вхождений. Если ключевые слова должен определять код, то это сложная задача, с точки зрения алгоритма.

А решения, обсуждавшиеся на форуме раньше, под вашу задачу не подходят?

-------
[Форум Word и Excel] - [Как запустить Word, Excel и Outlook в безопасном режиме?] - [Как удалить шаблон Word Normal.dotm?]

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:48, 18-09-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


a_axe,


Код: Выделить весь код
Option Explicit

Public Sub FindDuplicates()

Dim lRow As Long
Dim lRow2 As Long
Dim lLastRow As Long
Dim sString As Long
'This use of capitalisation is called 'camel case' - and is good for lots of reasons
' using lots of comments like this helps you to understand your code later

lastrow = ActiveSheet.UsedRange.Rows.Count
For lRow = 1 To lLastRow
  sstring1 = ActiveSheet.Range("A" & lRow).Value
  If sstring1 <> "" Then 'cell is not blank - proceed with test
   For lRow2 = lRow + 1 To lLastRow
     sstring2 = Range("A" & lRow2).Value
     If sstring1 = sstring2 Then
        bflag = True 'values match
        'do something with matching values
        ActiveSheet.Range("A" & lRow2).Interior.ColorIndex = 3   'mark cells with red background fill
        'you could also activesheet.range("A" & lrow2).clearcontents 'to delete values
     End If

    Next lRow2
   End If
Next lRow


If bflag = False Then MsgBox ("no duplicate values found")

End Sub
screen


Цитата a_axe:
(если нет - как об этом должен узнать алгоритм)? »
Хорошие вопросы.
1. А можно ли сделать в алгоритме сличение, например, говоря бытовым языком, не является ли транслит в данном случае MAKFA МАКФОЙ
2. Макар и Макароны, ну тут по корню,
Цитата a_axe:
"Творог деревен." и "Колбаски деревен." »
Цитата a_axe:
"Творог деревен." и "Колбаски деревен." »
дело в том, что в списке будет
твор деревен
творог дер
твор дереве
итак далее тво + дер
тут ключевое твор
а также

колбаса деревен
колб деревен
колб дер
колбас дере
и так далее

т.е. для таких фраз надо увидеть ключевое колб+дер

это можно сделать?
Цитата a_axe:
Предполагается, что вы для каждой ячейки будете указывать ключевые слова вручную? »
сравнивать вручную я не хочу в том и дело. Я просто как пример привел
Цитата a_axe:
под вашу задачу не подходят? »
проблема в том, что я не с экселем буду работать, я его как пример привел
исходные данные миллионы строк в txt

C:/чек.txt
он оттуда должен брать, т.е. я создам эксель файл, помещу туда код макроса, а он уже будет работать с текстовым файлом
там (текстовый)и должна появится колонка тип товара , а сам файл, уже буду в sql импортировать
при том, безупречного определения я не жду.

Последний раз редактировалось r-studio, 15-10-2018 в 12:18.


Отправлено: 12:53, 19-09-2018 | #3


Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


r-studio, опция
Цитата r-studio:
Option Explicit »
говорит о том, что переменные в вашем коде должны быть описаны через dim
lastrow у вас не описана (вместо этого - похожая переменная Dim lLastRow As Long), sstring1 и sstring2 тоже (должны быть - as string, у вас похожая переменная почему-то Dim sString As Long).
На это и ругается excel.

-------
[Форум Word и Excel] - [Как запустить Word, Excel и Outlook в безопасном режиме?] - [Как удалить шаблон Word Normal.dotm?]


Отправлено: 13:39, 19-09-2018 | #4


Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


a_axe, Как мне правильно составть код исходя из тех требований, что я описал постом выше? Сможете помочь?

Отправлено: 14:17, 19-09-2018 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


r-studio, перед тем как составлять код, правильно или неправильно, попробуйте сформулировать алгоритм. Я его тут не вижу.

Отправлено: 14:53, 19-09-2018 | #6



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Извлечение ключевых сущностей используя VBA

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Твиттер планирует внедрить фильтр ключевых слов OSZone News Новости информационных технологий 0 28-08-2016 16:30
2012 R2 - Запуск и работа Excel VBA используя службу Windows и Power Shell Mor940k Windows Server 2012/2012 R2 0 12-04-2016 12:26
Apple может лишиться нескольких ключевых патентов OSZone News Новости информационных технологий 1 10-12-2012 18:13
iPhone vs. Android: пять ключевых различий OSZone News Новости информационных технологий 0 03-07-2010 20:30
Доступ - создание ключевых слов к файлу для поиска Sparkster Microsoft Windows Vista 9 23-10-2007 03:36




 
Переход