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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 13:36   #1
kamarella
 
Регистрация: 19.01.2010
Сообщений: 9
Лампочка Выпадающий список, если значения в книге повторяются.

Здравствуйте, вопрос может примитивный, но найти ответа не могу. Есть книга, в столбце "пользователь" данные повторяются, причем каждый раз могут быть разные фамилии. Как мне сделать так чтобы в другой книге был выпадающий список, но при этом повторяющиеся фамилии отображались только один раз?? Хотелось бы решить проблему средствами Excel (2003).

Заранее спасибо.

пользователь
иванов
петров
сидоров
сидоров
иванов
иванов
иванов
kamarella вне форума Ответить с цитированием
Старый 23.08.2010, 14:24   #2
KL (XL)
Форумчанин
 
Аватар для KL (XL)
 
Регистрация: 04.08.2009
Сообщений: 112
По умолчанию

Можно так, но если строк тысячи, то может начать тормозить
В решении использован вспомогательный диапазон на другом листе и динамические диапазоны в именованных формулах.
Вложения
Тип файла: zip Test.zip (5.0 Кб, 29 просмотров)
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M
OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN
KL (XL) вне форума Ответить с цитированием
Старый 23.08.2010, 14:28   #3
kamarella
 
Регистрация: 19.01.2010
Сообщений: 9
По умолчанию

Даа, строк как правило более 30 тысяч. А можно как то еще это реализовать?
kamarella вне форума Ответить с цитированием
Старый 23.08.2010, 14:50   #4
KL (XL)
Форумчанин
 
Аватар для KL (XL)
 
Регистрация: 04.08.2009
Сообщений: 112
По умолчанию

Чтобы список обновлялся в реальном времени и при этом не тормозило для 30000 строк и более, боюсь, только макросом. Обычно формулы быстрее кода VBA, но это как раз тот случай, когда формула многократно выполняет слишком много избыточных операций :-(
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M
OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN
KL (XL) вне форума Ответить с цитированием
Старый 23.08.2010, 14:57   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Может, так подойдет?
PHP код:
Sub CreateTheList()
    
Dim i As LongAs New Collectionpoz As RangeAs String
    
For 1 To Cells(Rows.Count"A").End(xlUp).Row
        
If Cells(i"A") <> "" Then
            On Error Resume Next
x.Add Cells(i"A"), CStr(Cells(i"A"))
            If 
Err 0 Then s "," Cells(i"A") Else On Error GoTo 0
    End 
If: Next
    
[D1].Validation.Delete: [D1].Validation.Add Type:=xlValidateListFormula1:=s
End Sub 
Вложения
Тип файла: rar Списки.rar (14.0 Кб, 17 просмотров)
nilem вне форума Ответить с цитированием
Старый 23.08.2010, 15:03   #6
KL (XL)
Форумчанин
 
Аватар для KL (XL)
 
Регистрация: 04.08.2009
Сообщений: 112
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Может, так подойдет?
PHP код:
Sub CreateTheList()
    
Dim i As LongAs New Collectionpoz As RangeAs String
    
For 1 To Cells(Rows.Count"A").End(xlUp).Row
        
If Cells(i"A") <> "" Then
            On Error Resume Next
x.Add Cells(i"A"), CStr(Cells(i"A"))
            If 
Err 0 Then s "," Cells(i"A") Else On Error GoTo 0
    End 
If: Next
    
[D1].Validation.Delete: [D1].Validation.Add Type:=xlValidateListFormula1:=s
End Sub 
По-моему, в валидации будет ограничение длины текстовой строки до 255 символов и, потом, это небыстрый алгоритм и нет сортировки :-)

Думаю, что без вспомогательного листа не обойтись, если нужна именно валидация и суммарная длина имен и разделителей превышает 255 символов.
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M
OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN

Последний раз редактировалось KL (XL); 23.08.2010 в 15:07.
KL (XL) вне форума Ответить с цитированием
Старый 23.08.2010, 15:04   #7
kamarella
 
Регистрация: 19.01.2010
Сообщений: 9
По умолчанию

Эх. Ой как жаль. Сижу щас в вашем творении разбираюсь... И что то с первого раза вникнуть не могу. У меня в выпадающем списке еще дополнительно выводятся записи "#ЧИСЛО!" - помимо фамилий. В чем проблема может быть?
kamarella вне форума Ответить с цитированием
Старый 23.08.2010, 15:09   #8
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

может сводную попробовать прикрутить?
аналитика вне форума Ответить с цитированием
Старый 23.08.2010, 15:09   #9
kamarella
 
Регистрация: 19.01.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от аналитика Посмотреть сообщение
может сводную попробовать прикрутить?
А поподробнее?
kamarella вне форума Ответить с цитированием
Старый 23.08.2010, 15:12   #10
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

строишь сводную на основе 30-титысячного столбца, получаешь уникальный список...
аналитика вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выпадающий список в зависимости от значения ячейки Tanya2007 Microsoft Office Excel 6 25.03.2010 01:33
Выпадающий список yadanila HTML и CSS 1 03.12.2009 15:00
Выпадающий список king13 Microsoft Office Excel 2 24.11.2009 13:25
Выпадающий список с данными из другой закрытой книге Excel. agregator Microsoft Office Excel 1 21.09.2009 16:33
Выпадающий список Акашаев Нурлан Общие вопросы Delphi 3 27.06.2008 16:58