Страница: 1 |
Страница: 1 |
Вопрос: Сравнение масивов
Добавлено: 08.12.08 10:28
Автор вопроса:
AngryBadger
Всем доброго времени суток!
Подскажите, есть ли в VBA функция сравнения двух масивов? Проблема в следующем, есть два масива разного размера(клиенты на начало недели и клиенты на конец недели), необходимо путем сравнения определить какие клиенты добавились, а какие выбыли за неделю.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: Nytrogen
Вопросов: 18
Ответов: 186
Профиль | | #1
Добавлено: 08.12.08 20:23
Как таковой функции, реализующей сравнение массивов, которое в Вашем случае правильно было бы назвать разностью, в VBA не существует. Я предлагаю вариант функции, основанной на использовании коллекции из уникальных элементов.
Номер ответа: 2
Автор ответа: AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #2
Добавлено: 09.12.08 10:00
Nytrogen, большое спасибо за ответ. А есть ли у тебя пример программного заполнения массива?
Номер ответа: 3
Автор ответа: Nytrogen
Вопросов: 18
Ответов: 186
Профиль | | #3
Добавлено: 09.12.08 16:36
Массив можно заполнять из разных источников: диапазонов, файлов, функций... Какой вариант Вас интересует?
Номер ответа: 4
Автор ответа: AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #4
Добавлено: 09.12.08 17:48
Наиболее удобно было бы заполнять из диапазона.
Номер ответа: 5
Автор ответа: Nytrogen
Вопросов: 18
Ответов: 186
Профиль | | #5
Добавлено: 09.12.08 20:13
Ну вот к примеру макрос, который заносит в массив значения из числового диапазона.
Ключевой здесь является строка
Оператор Redim Preserve переопределяет размерность массива, сохраняя все его элементы.
Возможен и более рациональный вариант, в котором размерность массива определяется непосредственно перед циклом:
В этом случае оператор Preserve, сохраняющий элементы, нам уже не нужен, ибо вначале массив пустой.
Номер ответа: 6
Автор ответа: Father
Вопросов: 0
Ответов: 159
Профиль | | #6
Добавлено: 09.12.08 21:44
Вот любопытный способ:
что интересно, LBound этого массива = 1, даже при Option Base 0
Номер ответа: 7
Автор ответа: AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #7
Добавлено: 10.12.08 13:26
Огромное всем Спасибо!