|
|
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Необходимо вывести в ListBox список уникальных значений из коллекции NoDupes, которая формируется по диапазону в книге Ехсеl. Если в диапазоне "Выбор" нет повторяющихся значений, то макрос работает, если есть повторения - то выдает ошибку. Вот макрос. Что неправильно? Sub removeDup() Dim AllCells As Range, Cell As Range Dim NoDupes As New Collection On Error Resume Next For Each Cell In Range("Выборка") NoDupes.Add Cell.Value, CStr(Cell.Value) Next Cell On Error GoTo 0 For Each Item In NoDupes Nachalo.ListBox1.AddItem Item Next Item Nachalo.Label1.Caption = _ "Кол-во элементов:" & NoDupes.Count Nachalo.Show End Sub Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 22:00 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
gvozdev, если честно, то это свинство. Без примера выложили код. Гадайте, что у меня не так! Я с тем же успехом, даже не глянув, могу сказать: а у меня работает! Такой ответ устроит? Загляните в тему на дружественном форуме: http://www.planetaexcel.ru/forum.php?forum_id=129 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 22:07 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
kuklp, зато очень корректно отправлять на другой сайт. Если хотите помочь помогайте, если непонятна формулировка вопроса - задайте свой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 22:40 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
gvozdevВот макрос. Что неправильно? ну, во-первых, неправильно то, что вы не оформили код как положено, заставив уважаемых участников ломать глаза курсивом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Во-вторых, как, хоть и слишком резко (хотя сам требует обращения на Вы), предыдущий оратор подсказал, что неплохо бы выложить пример, чтобы не заставлять того, кто действительно хочет помочь, самому набивать тестовые данные. В-третьих не указали ни строку, на которой возникает ошибка, ни сам текст ошибки, что начинает уже вызывать подозрение, что вам плохо хочется получить ответ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 23:02 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Кстати, код рабочий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 23:06 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Shocker.ProВо-вторых, как, хоть и слишком резко (хотя сам требует обращения на Вы)Шокер, а я кому-то ТЫкнул? А в чем резкость? Назвал свинством, а не глупостью? Ну, мож ты и прав... Прошу прощения у автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 23:16 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
kuklpШокер, а я кому-то ТЫкнул? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 23:20 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Согласен, что задачу сформулировал нечетко. "Выборка" - диапазон ячеек (А1:А100) с данными, среди которых есть повторения. Задача вывести в ListBox уникальные данные из этого диапазона. Ошибка выскакивает на строке NoDupes.Add Cell.Value, CStr(Cell.Value) , после чтения неуникальной записи в данном диапазоне, хотя поставил On Error Resume Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2011, 09:44 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
gvozdev, Код: plaintext 1. 2. 3. Вообще, если вы хотите получить гарантированно уникальные значения из выборки, то путь для вас - либо отсортировать выборку, а потом анализировать её последовательно, добавляя неповторяющиеся значения; либо анализировать на каждой итерации заполненные значения. И никаких FOR EACH, ибо как там работают оптимизаторы - ведомо лишь МС, - поэтому только реальный перебор строк счетчиком в диапазоне... Кроме того, не забывайте, что лист/комбобокс можно заполнить не только с помощью .Add, и и прямо из массива переменных памяти, с которым вы можете работать до этого. С другой стороны (судя по названию "Выборка") - вы ЭТО уже откуда-то отобрали; так кто вам мешал избавиться от дубликатов еще на этапе отбора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 01:02 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
AndreTM, Да не, должно работать. И работает - я проверял этот код, и писал выше, что он рабочий. Ошибка где-то в стеке On Error, скорее всего на обрамлении этой процедуры, которое автор не приводит. Но автор по непонятным причинам категорически не хочет выложить тестовый пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 01:53 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Как вариант - ошибка именно в стеке. Если ТС злоупотребляет конструкциями ON ERROR на каждом шаге - я даже не удивлюсь. Ибо глубина стека возвратов не бесконечна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 07:22 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Вы правы. Макрос работает, но почему-то не на всех машинах. на работе Еxcel 2007 - работает, дома в 2003 -нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 09:07 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
gvozdev, А как запустить-то? У меня открывается форма размером больше чем на экран - ужас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 11:28 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Пара вариантов, с сортировкой и без. Проверил на 3, 7 и 10 Экселях. С сортировкой взято по приведенной ранее ссылке. Только она почему-то неверно скопировалась:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 11:52 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
kuklp, Я не получил ответ на вопрос, как запустить Нажатие на кнопки Go ошибок не выдает. Можно урезать тестовый файл до единственного нерабочего фрагмента, а не выдавать мне форму больше, чем мой экран, которую невозможно закрыть крестиком с неизвестной надобностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 12:14 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, согласен, форма - ни в какие рамки. Уменьшил форму, см. файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 12:23 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
И в очередной раз я пытаюсь выяснить - что нужно сделать, чтобы увидеть глюк???????? Мы так до конца сезона будем переписываться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2011, 14:51 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Прошу еще раз прощение за оформление. Уважаемый Kuklp исправил файл за меня. На рабочем компе макрос работает, дома нет. Видно где-то проблема в программе. Всем большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2011, 11:28 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
gvozdev, я не настаиваю, но все-таки лучше давать переменным имена, не совпадающие с именами уже зарезервированными в VBA(item,cell). И неплохо бы все переменные объявлять. Проверил в обеих версиях Excel: все работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2011, 15:08 |
|
||
|
Уникальные записи в коллекции
|
|||
|---|---|---|---|
|
#18+
А почему не воспользоваться готовой функцией? http://excelvba.ru/code/UniqueValuesFromArray Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2011, 18:21 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37439094&tid=2176485]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 473ms |

| 0 / 0 |
