![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
![]()
Помогите начинающему решить проблему!
Как запустить макрос (на листе 1 с выводом результатов на лист 2) с кнопки, находящейся на листе 3? Суть макроса - из диапазона на листе "Массив" выбрать уникальные наименования клиентов и скопировать их в диапазон на листе выводы по столбцу 1 начиная со строки 2 (как в расширенном фильтре). Макрос запускается с элемента управления "Кнопка" на листе "Кнопка". Помогите пожалуйста! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Посмотрите пример во вложении.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
![]()
to SAS888 Огромное спасибо!!!
А еше одна просьба: не могли Вы объяснить на пальцах суть макроса, чтобы я мог его модифицировать при необходимости! P.S. На пальцах - это для полных чайников. ![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Макрос работает так:
Создается массив a значений столбца "A" листа "Массив". Затем, в цикле перебираются все значения массива и заносятся в коллекцию x. Т.к. двух одинаковых членов коллекции быть не может, то мы перехватываем возможную ошибку при добавлении нового члена в коллекцию, и если ошибки нет, то присваиваем текущее значение следующему элементу созданного нами массива b, имеющего ту же размерность, что и массив a. Если же ошибка есть (т.е. такой член коллекции уже существует), то это значение игнорируем (не заносим в массив b). Таким образом, по окончании цикла имеем массив b, содержащий только уникальные значения массива a. Теперь помещаем значения массива b в предварительно очищенный от данных столбец "A" листа "Выводы". Данный метод (с применением массивов) использован потому, что гораздо быстрее работать в памяти, чем с ячейками рабочего листа Excel (примерно в 100 раз). Макрос, при работе с ячейками использует всего 2 команды: поместить диапазон данных в массив и обратное действие. При больших объемах данных - такое "ускорение" существенно.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
![]()
Спасибо огромное, разобрался!
![]() |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
![]()
Маленький нюанс (точнее вопрос).
Массив, из которого берутся данные, может быть несплошным, то есть там могут быть пустые ячейки. В этом случае макрос и выводы делает несплошными, то есть считает пустые ячейки как уникальные значения. Как этого избежать? Помогите, пожалуйста! |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Вообще-то, пустая ячейка, это тоже одно из уникальных значений. Поэтому, она может встречаться не более, чем 1 раз.
Если и этого не нужно, то см. пример во вложении.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
![]()
Спасибо, теперь все отлично
PS Не ожидал что это так просто изменить |
![]() |
![]() |
![]() |
#9 |
Новичок
Джуниор
Регистрация: 26.01.2010
Сообщений: 2
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка массива макросом | Иванов_ДМ | Microsoft Office Excel | 8 | 18.04.2009 23:04 |
обработка массива, с++ | lusuj | Помощь студентам | 2 | 11.11.2008 19:27 |
Delphi - обработка двумерного массива | dm.os. | Помощь студентам | 1 | 30.09.2008 23:32 |
[Delphi] создание и обработка двумерного массива | screep | Помощь студентам | 5 | 16.06.2008 19:27 |
Обработка вещественного массива | Painsector | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 10.12.2007 19:48 |