Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удалить из строки повторы, как? A2007
 
 автор: OlegEk   (14.11.2011 в 22:00)   личное сообщение
 
 

Есть дурацкий прайс поставщика, где нет нормального наименования товара.
Приходится сращивать из нескольких столбцов, в которых указано назначение товара, производитель, партнамбер, дескрипшен.
Всё бы хорошо, но есть же бестолковые манагеры, которые могут продублировать например в парнамбере и дескрипшене собственно модель устройства, или производителя, или.... В результате можно получить например что то подобное:
"Компонент майкрософт офис, майкрософт аксесс, приложение аксесс"
С ходу приходит в голову только разобрать строку на запчасти, и посчитать количество вхождений. Затем удалить каждое повторное точное вхождение для тех слов, количество которых превышает 1 (словоформы например не учитываем).
В итоге должно получиться:
"Компонент майкрософт офис, аксесс, приложение"
Что меня вполне устроит.
Но на таблице в несколько десятков тысяч строк это будет тяжковато как мне кажется.
Возможно кто то решал уже подобную задачу? Или с ходу родилась идея?

Заранее благодарен :-)

  Ответить  
 
 автор: Lukas   (14.11.2011 в 22:41)   личное сообщение
 
 


Public Function GetOnly(ByVal strInput As String) As String
    Dim dic As New Scripting.Dictionary
    Dim i As Integer
    Dim Words As Variant
    strInput = Replace(strInput, ",", "")
    Words = Split(strInput, " ")
    For i = 0 To UBound(Words)
        If Not dic.Exists(Words(i)) Then dic.Add Words(i), Words(i)
    Next i
    GetOnly = Join(dic.Items)
End Function

?GetOnly("Компонент майкрософт офис, майкрософт аксесс, приложение аксесс")
Компонент майкрософт офис аксесс приложение

  Ответить  
 
 автор: OlegEk   (15.11.2011 в 07:46)   личное сообщение
 
 

Как минимум пару новых приёмов для себя открыл :-)
Как бы ещё знаки препинания сохранить? Их может быть много разных :;/\(){}[] и т.д.

В любом случае Спасибо :-), есть от чего оттолкнуться

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList