|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.06.2011, 13:04 | #1 |
Форумчанин
Регистрация: 25.05.2011
Сообщений: 249
|
поиск дублей в строке
здравствуйте уважаемые!
помогите пожалуйста определить дубли (т.е. совпадающие значения) в строке, и если есть такие, то покрасить эти ячейки, например, в красный цвет собственно, я предполагаю, что надо использовать For each для диапазона, но не понимаю, как написать/определить в этом диапазоне одинаковые элементы, т.е. что за функция определения совпадают или нет ячейки, как-то так подскажите плииз! дубли.rar Последний раз редактировалось Bape}l{ka; 09.06.2011 в 13:26. |
09.06.2011, 13:40 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Для определения дублей обычно словарём или коллекцией пользуются (на больших диапазонах быстрее), но можно привлечь и функцию листа СЧЕТЕСЛИ()
Так например, грубо: Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 09.06.2011 в 13:53. |
09.06.2011, 13:52 | #3 |
Форумчанин
Регистрация: 25.05.2011
Сообщений: 249
|
а поподробнее про словарь или коллекцию?
можно пожалуйста на примере, а то так я не понимаю)) или же с функцией, строение ее понятно, но как ее применить? покажите плз на примере приложенного выше файла, чтоб я могла потыкать, сама поизменять Последний раз редактировалось Bape}l{ka; 09.06.2011 в 14:06. |
09.06.2011, 14:07 | #4 |
Форумчанин
Регистрация: 25.05.2011
Сообщений: 249
|
спасибо большое, сча попробую
Hugo121, а вы могли бы пояснить для меня эти строки, что тут происходит? For Each r In [a1:q82].Rows For Each c In Intersect(Sheets(3).UsedRange, r) Последний раз редактировалось Bape}l{ka; 09.06.2011 в 14:15. |
09.06.2011, 14:08 | #5 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Условное форматирование для всего листа:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
09.06.2011, 14:22 | #6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
На словаре сложнее получается...
Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
09.06.2011, 14:28 | #7 |
Форумчанин
Регистрация: 25.05.2011
Сообщений: 249
|
Казанский
тоже спасибо большое, но на самом деле Hugo121 предложил как раз то что мне нужно, еще бы пояснения получить)) |
09.06.2011, 14:32 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Так в первом коде пояснять нечего, раз Вы уже про for each осведомлены.
упс, заметил: для каждого r в рядах/строках диапазона [a1:q82] (но r - это весь ряд!) так мне казалось, см. ниже For Each r In [a1:q82].Rows для каждого c в пересечении использованной области третьего листа с r For Each c In Intersect(Sheets(3).UsedRange, r) т.е. в итоге пробегаем построчно по нужным ячейкам. А по второму (плюс к сказанному выше)- на каждом шаге цикла перебора строк заводим новый словарь, куда в цикле по строке помещаем значения ячеек с порядковым номером. Если такое значение уже есть - красим её (ячейку) и ту, порядковый номер которой в словаре.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 09.06.2011 в 17:10. |
09.06.2011, 14:38 | #9 |
Форумчанин
Регистрация: 25.05.2011
Сообщений: 249
|
нет, в целом что происходит, понятно, мне нужны частности, т.к. я в синтаксисе не очень понимаю:
For Each r In [a1:q82].Rows ---> для каждого r в диапазоне [a1:q82] - не понятно, что значит .Rows ? For Each c In Intersect(Sheets(3).UsedRange, r) ---> тут не ясно, что такое Intersect(Sheets(3).UsedRange, r) могли бы вы эти действия словами описать пожалуйста, чтобы в похожей ситуации я смогла сама сообразить? |
09.06.2011, 15:50 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
.Rows - это ряд.
Т.е. ряды, присутствующие в диапазоне. Но ряд получаем целиком, от A до IV или что там в 2007. - это неверно, см. ниже Если бы написал для каждого r в диапазоне [a1:q82].cells - получили бы все ячейки этого диапазона, но Вам ведь нужны повторы в строках? Intersect(Sheets(3).UsedRange, r) Intersect - это наверное пересечение (не смотрел в переводчике). UsedRange - использованная область. Можно было бы вероятно и так написать: Intersect(Sheets(3).[a1:q82], r) Т.е. получаем общую область пересечения двух диапазонов - всего [a1:q82] и текущего ряда = ячейки ряда в [a1:q82]. Понятно объяснил?
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 09.06.2011 в 17:12. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как объединить значения дублей в одну ячейку | azzaro | Microsoft Office Excel | 9 | 22.01.2011 14:45 |
поиск в строке | Apis | Помощь студентам | 1 | 27.04.2010 22:30 |
поиск в строке | Apis | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 27.04.2010 22:05 |
поиск в строке | Apis | Общие вопросы C/C++ | 1 | 27.04.2010 22:04 |
Удаление дублей | 777grabber | PHP | 4 | 11.11.2009 17:21 |