Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2014, 15:21   #21
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Выше дописал - на Вашем примере проверить сейчас некогда...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.04.2014, 16:01   #22
serj_spb
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Можно и так сделать, а можно и иначе.
Думаю проще именно иначе - перебирать все слова, и те, которых нет в списке "критериев", собирать в строку-результат.
Если я понял что нужно - файла с есть/нужно ведь так и нет пока...

P.S.
Что-то вроде
Код:
Dim dic As Object

Function nodup(s, krit)
    Dim w
    If dic Is Nothing Then
        Set dic = CreateObject("Scripting.Dictionary")
        dic.comparemode = 1
        For Each w In Split(krit)
            dic(w) = 0&
        Next
    End If

    For Each w In Split(s)
        If Not dic.exists(w) Then out = out & " " & w
    Next

    nodup = Mid(out, 2)
End Function

Sub pereinit()
    Set dic = Nothing
    Application.Calculate
End Sub
Только если менять критерии - нужно или переокрывать файл, или отдельной процедурой переинициализировать словарь (Sub pereinit()).
Зато должно быстро работать на большом количистве ячеек (т.к. критерии не нужно каждый раз перезапоминать).
Объясните, пожалуйста, как теперь этим пользоваться.
я добавил в файл функцию и макрос. Что делать дальше не понимаю.
serj_spb вне форума Ответить с цитированием
Старый 01.04.2014, 16:45   #23
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ага, так список слов для каждой строки свой! Тогда код такой (макрос перезагрузки словаря не нужен):
Код:
Function nodup(s, krit)
    Dim w, dic As Object, out$
    If dic Is Nothing Then
        Set dic = CreateObject("Scripting.Dictionary")
        dic.comparemode = 1
        For Each w In Split(krit)
            dic(w) = 0&
        Next
    End If

    For Each w In Split(s)
        If Not dic.exists(w) Then out = out & " " & w
    Next

    nodup = Mid(out, 2)
End Function
А в ячейку пишите
Код:
=nodup(B2,A2)
или какой там у Вас разделитель аргументов - не могу выложить файл...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 01.04.2014 в 17:35.
Hugo121 вне форума Ответить с цитированием
Старый 01.04.2014, 16:55   #24
serj_spb
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
=nodup(B2,A2)
или какой там у Вас разделитель аргументов - не могу выложить файл...
прописал в ячейку столбца "результат" - =nodup(RC[-2], RC[-1] )
выдал ошибку формулы.
использовал выложенный ранее файл
serj_spb вне форума Ответить с цитированием
Старый 01.04.2014, 17:00   #25
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так формат ячеек сделайте по умолчанию - в текстовом формате ничего никогда работать не будет!
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.04.2014, 17:04   #26
serj_spb
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Так формат ячеек сделайте по умолчанию - в текстовом формате ничего никогда работать не будет!
все используемые ячейки сделал в формате - общий.
ввожу формулу =nodup( RC[-1], RC[-2])
первую ячейку в формуле выделяет синим, при нажатии enter ничего не происходит.
serj_spb вне форума Ответить с цитированием
Старый 01.04.2014, 17:39   #27
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

По моему,
=nodup(RC[-2], RC[-1] )
и
=nodup(B2,A2)
совершенно зеркально противоположные аргументы.
Так держаться за R1C1 - ваше право, но я такой стиль не использую.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.04.2014, 17:49   #28
serj_spb
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
По моему,
=nodup(RC[-2], RC[-1] )
и
=nodup(B2,A2)
совершенно зеркально противоположные аргументы.
Так держаться за R1C1 - ваше право, но я такой стиль не использую.
как перейти на ваш стиль? я просто щелкаю по ячейке и автоматически проставляется такое значение.
serj_spb вне форума Ответить с цитированием
Старый 01.04.2014, 17:53   #29
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В настройках галка есть. Не знаю какой у Вас Эксель, в 2003 это tools-options-general-R1C1 reference style
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.04.2014, 18:06   #30
serj_spb
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
В настройках галка есть. Не знаю какой у Вас Эксель, в 2003 это tools-options-general-R1C1 reference style
Убрал эту опцию. Ввожу формулу. Выделяется первая ячейка в формуле, при нажатии enter формулу не принимает. Симтомы те же.
serj_spb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отформатировать часть текста в ячейке eto Microsoft Office Excel 9 03.04.2016 19:33
Сравнение 2 столбцов и удаление повторяющегося из второго столбца ildusfm Microsoft Office Excel 3 07.05.2009 09:09
форматирование текста в ячейке alex_r Microsoft Office Excel 2 30.04.2009 19:12
удаление лишних данных в ячейке mistx Microsoft Office Excel 2 24.02.2009 18:32
Удаление символа в ячейке Flangini Microsoft Office Excel 2 05.05.2008 14:02