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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2011, 17:53   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию обработка массива из несмежных диапазонов

здравствуйте еще раз)))

помогите, плз, уже клинит о.О
есть прекрасная функция, честно взятая с отсюда
она отлично работает с выделенным смежным диапазоном, НО если диапазоны несмежные, то в массив попадают только значения из первого Area, а остальное не обрабатывается(??) я уж все передумала и перепробовала, но так и не поняла, как сделать, чтоб обрабатывало все выделенное помогите плз!!

Код:
Function UniqueValues(ByVal arr) As Collection
    ' функция получает в качестве параметра массив любой размерности
   ' возвращает коллекцию уникальных НЕПУСТЫХ значений
   Set UniqueValues = New Collection: On Error Resume Next
    For Each v In arr
        v = Trim(v): If Len(v) Then UniqueValues.Add CStr(v), CStr(v)
    Next v
End Function


Sub ПримерИспользования_UniqueValues()
    For Each v In UniqueValues(Selection.Value)
        MsgBox v
    Next
End Sub

Последний раз редактировалось Bape}l{ka; 19.07.2011 в 18:07.
Bape}l{ka вне форума Ответить с цитированием
Старый 19.07.2011, 18:28   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Добавил в ту статью новую функцию:

Цитата:
Код:
Function UniqueValuesFormRange(ByVal ra As Range) As Collection
    ' функция получает в качестве параметра диапазон ячеек
   ' возвращает коллекцию уникальных НЕПУСТЫХ значений
   Set UniqueValuesFormRange = New Collection: On Error Resume Next
    Dim ar As Range
    For Each ar In ra.Areas
        For Each v In ar.Value
            v = Trim(v): If Len(v) Then UniqueValuesFormRange.Add CStr(v), CStr(v)
        Next v
    Next ar
End Function
Пример её использования:

Код:
Sub ПримерИспользования_UniqueValuesFormRange()
    For Each v In UniqueValuesFormRange(Selection)
        Debug.Print v
    Next
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 19.07.2011, 18:43   #3
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

спасибо, EducatedFool хD

я думала в том же направлении, недодумала.. с синтаксисом не разобралась =ь
Bape}l{ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка массива (си) Pascaler Помощь студентам 1 01.06.2011 11:28
Обработка Массива Марина01 Помощь студентам 6 26.04.2011 16:38
Обработка двумерного массива Happy001 Помощь студентам 0 07.03.2011 01:41
C++ Обработка массива JonnySKS Помощь студентам 0 05.05.2010 20:14
обработка массива, с++ lusuj Помощь студентам 2 11.11.2008 19:27