Основы офисного программирования и язык VBA


Фильтрация элементов массива. Функция Filter


Функция Filter является одним из вариантов поиска по образцу среди элементов массива. Здесь не требуется точного совпадения элемента и образца, достаточно, чтобы строка - образец содержалась в строке, заданной элементом массива. Поскольку совпадений может быть достаточно много, то результатом является массив отфильтрованных элементов. Некоторые детали будут пояснены при описании аргументов функции Filter. Вот ее синтаксис:

Filter(sourcearray, match[, include[, compare]])

Ее параметры имеют следующий смысл:

  • sourcearray - одномерный массив, элементы которого являются строками. Он может быть получен, например, как результат расщепления строки в массив.
  • match - образец поиска. Строка, вхождение которой ищется в каждом элементе исходного массива.
  • include - необязательный аргумент булевого типа. По умолчанию имеет значение True, означающее, что элементы, удовлетворяющие образцу, входят в результирующий массив. Если задано значение False, то результирующий массив составляется из элементов, не удовлетворяющих образцу.
  • compare - имеет обычный смысл.

В качестве результата возвращается массив отфильтрованных элементов.

Наш пример будет представлять расширенный вариант уже приводившейся процедуры SplitAndJoin:

Public Sub SplitAndJoin() 'В этой процедуре сложное предложение разделяется на простые 'А затем после обработки строка восстанавливается 'Здесь же демонстрируется фильтрация элементов массива 'Объявляем динамический массив Dim Simple() As String, i As Byte Dim Simple1() As String, Res As String Dim Simple2() As String 'Размерность массива Simple устанавливается автоматически 'в соответствии с размерностью массива, возвращаемого функцией Split Simple = Split("А это пшеница, которая в темном чулане хранится в доме, " _ & "который построил Джек", ", ") 'Создаем новый массив ReDim Simple1(1 To UBound(Simple) + 2) Simple1(1) = "А это веселая птица - синица" Simple1(2) = "которая часто ворует пшеницу" For i = 3 To UBound(Simple1) Simple1(i) = Simple(i - 2) Next i 'Создаем строку из массива Simple1

Res = Join(Simple1, ", ") Debug.Print Res 'Фильтрация элементов массива Simple2 = Filter(Simple1, "котор") Res = Join(Simple2, ", ") Debug.Print Res

Simple2 = Filter(Simple1, "котор", False) Res = Join(Simple2, ", ") Debug.Print Res End Sub

Пример 8.3.

Вот результаты отладочной печати:

А это веселая птица - синица, которая часто ворует пшеницу, которая в темном чулане хранится в доме, который построил Джек которая часто ворует пшеницу, которая в темном чулане хранится в доме, который построил Джек А это веселая птица - синица




- Начало -  - Назад -  - Вперед -



Книжный магазин