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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2011, 15:41   #1
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию Поиск совпадений

Добрый день!
Есть файл, в листе 130 нужно найти кол-во повторений табельных номеров. КОД ЕСТЬ!, но из-за особенности файла если запустить макрос Sovpadenie, то Exel зависает. Если скопировать ячейку С308 в ячейки С309:С312 и запустить макрос vvv, а потом макрос Sovpadenie, то всё работает. В чём проблема? Помогите кто чём может!
Жалко нет смайлика бьёщегося об стену)
Вложения
Тип файла: zip Копия Вид 130 131 132 125 февраль.zip (15.3 Кб, 15 просмотров)
Серёга0629 вне форума Ответить с цитированием
Старый 26.08.2011, 16:20   #2
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

видите, ваш макрос независает, он работает - находит совпадения, в данном случае - пустые ячейки... выход из цикла надо по другому прописать
Bape}l{ka вне форума Ответить с цитированием
Старый 26.08.2011, 16:23   #3
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Я думаю будет проще если создать массив отсортировать его методом Шелла и потом внутри массива искать соседние одинаковые значения
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 26.08.2011, 16:25   #4
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию

по другому, это как?
да и в других файлах он работает прекрасно, почеу тогда при забивании 4-х ячеек и запуске макроса vvv макрос работает хорошо?
Если есть возможность каким либо образом переделать макрос - буду благодарен.
Серёга0629 вне форума Ответить с цитированием
Старый 26.08.2011, 16:27   #5
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию

Сортировать массив нельзя! не в коем случае. , я сюда выложил обрезаную таблицу, дальше есть колонки которые с часами, цехами и прочее.
Серёга0629 вне форума Ответить с цитированием
Старый 26.08.2011, 16:27   #6
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

или ограничить диапазон проверки
Код:
Set x = Column("C").Find(what:=Cells(i, "C"), LookAt:=xlWhole)
переделать в:
Код:
Set x = Range("C1:C308").Find(what:=Cells(i, "C"), LookAt:=xlWhole)
п.с.: не знаю, у меня он даже при копировании и запуске сначала VVV все равно "подвисал"

Последний раз редактировалось Bape}l{ka; 26.08.2011 в 16:29.
Bape}l{ka вне форума Ответить с цитированием
Старый 26.08.2011, 16:41   #7
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
Радость

так работает, спасибо) но кол-во у меня будет менятся, попробую всавить вместь С308 - LastRow, но над этим поколдую уже попозжа)
СПАСИБО! что откликнулись.
Серёга0629 вне форума Ответить с цитированием
Старый 26.08.2011, 16:46   #8
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

у Вас перед LastRow знак еще какой-то стоял - может случайно дописали, поэтому и не определяется
Bape}l{ka вне форума Ответить с цитированием
Старый 26.08.2011, 17:23   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ммм... Количество уникальных значений обычно словарём или коллекцией определяют.
Не совсем понял, что там ещё делается (запоминаются номера строк зачем-то), но и это можно словарём сделать, или если допмассив привлечь.
Поищите тут по Dictionary и Collection.
Если протянуть рядом единицы, то без переделок можно кодом из http://www.planetaexcel.ru/forum.php?thread_id=26105 вывести на новый лист все номера с количеством повторов.
Ну а если в том коде поковыряться - можно как угодно переделать.
И быстрый.

Так что именно нужно сделать? Код показал, что там нет повторов...

P.S. У меня заработало с добавлением одного условия, чтоб пустые не гоняло:
Код:
For i = 3 To 2003
If Len(Cells(i, "C")) Then
...
End If
Next
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 26.08.2011 в 17:28.
Hugo121 вне форума Ответить с цитированием
Старый 29.08.2011, 09:22   #10
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию

Код:
For i = 3 To 2003
If Len(Cells(i, "C")) Then
...
End If
Next
Спасибо! работает, по крайней мере пока работает
Спасибо всем кто откликнулся
Серёга0629 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск совпадений KillJoy Паскаль, Turbo Pascal, PascalABC.NET 2 05.09.2011 11:53
Поиск совпадений Claster Общие вопросы Delphi 4 22.06.2011 17:34
Поиск совпадений в ListBox NiKiToZZ- Помощь студентам 7 05.01.2011 10:54
Поиск совпадений в БД _PROGRAMM_ PHP 6 21.05.2010 13:53
Поиск совпадений mistx Microsoft Office Excel 22 14.08.2009 13:41