Филтриращи масиви VBA

The Функция за филтър VBA ви позволява бързо да филтрирате масиви. Когато филтрирате масиви, трябва да имате предвид няколко настройки. Ще ги обсъдим по -долу.

Филтър - Съвпадение

По подразбиране функцията за филтриране на VBA ще филтрира масив за съвпадения. В примера по -долу ще филтрираме масива за съвпадения със „Smith“.

1234567891011121314 Sub Filter_Match ()„Определете масивDim strNames As VariantstrNames = Array („Стив Смит“, „Шанън Смит“, „Райън Джонсън“)„Филтриращ масивЗатъмнете strSubNames като вариантstrSubNames = Филтър (strNames, "Smith")„Брой филтрирани масивиMsgBox "Намерено" & UBound (strSubNames) - LBound (strSubNames) + 1 & "имена."End Sub

Няколко важни точки:

  • Променливата с филтриран масив трябва да бъде декларирана като вариант на тип данни, за да се избегне дефинирането на размера на масива.
  • По подразбиране функцията Филтър е чувствителна към малки и големи букви. Така че филтрирането върху „ковач“ ще даде различен резултат от „Смит“. По -долу ще ви покажем как да промените тази настройка.

Филтър - Чувствителен към регистъра

По подразбиране VBA е чувствителен към регистъра. Това означава, че „ковачът“ не е равен на „Смит“. Това важи за функцията за филтриране, както и за всички (повечето?) Други VBA функции или сравнения.

Лично аз никога не искам VBA да е чувствителен към регистъра, затова винаги добавям Option Compare Text в горната част на всички мои кодови модули. Опция Сравняване на текст казва на VBA да игнорира регистъра, така че да не е чувствителен към регистъра:

1 Опция Сравняване на текст

Добавянето на опция Сравняване на текст в горната част на вашия модул ще направи регистъра на функцията за филтър нечувствителен. Като алтернатива можете да кажете на самата функция за филтър да нечувствителна към регистъра с аргумента vbTextCompare:

1 strSubNames = Филтър (strNames, "smith",, vbTextCompare)

Пълен пример:

1234567891011121314 Sub Filter_MatchCase ()„Определете масивDim strNames As VariantstrNames = Array („Стив Смит“, „Шанън Смит“, „Райън Джонсън“)„Филтриращ масивЗатъмнете strSubNames като вариантstrSubNames = Филтър (strNames, "smith",, vbTextCompare)„Брой филтрирани масивиMsgBox "Намерено" & UBound (strSubNames) - LBound (strSubNames) + 1 & "имена."End Sub

Филтър - не съвпада

Функцията за филтриране може да се използва и за идентифициране на елементи от масива, които НЕДЕЙ съвпадат с въведените критерии, като зададете аргумента Включване на FALSE:

1 strSubNames = Филтър (strNames, "Smith", False)

Пълен пример:

1234567891011121314 Sub Filter_NoMatch ()„Определете масивDim strNames As VariantstrNames = Array („Стив Смит“, „Шанън Смит“, „Райън Джонсън“)„Филтриращ масивЗатъмнете strSubNames като вариантstrSubNames = Филтър (strNames, "Smith", False)„Брой филтрирани масивиMsgBox "Намерено" & UBound (strSubNames) - LBound (strSubNames) + 1 & "имена."End Sub

Функция на филтъра

Функцията VBA Filter връща подмножество Array на предоставен низов масив.

Синтаксисът на функцията за филтриране е:

Филтър (SourceArray, Match, [Include], [Compare])

Аргументите на функцията са:

  • SourceArray - Оригиналният масив за филтриране
  • Съвпада - Низът за търсене
  • [Включване] - ОПЦИЯ TRUE (Връща съвпадения), FALSE (Връща елементи, които не съвпадат)
  • [Сравнете] - ОПЦИЯ vbBinaryCompare - двоично сравнение, vbTextCompare - текстово сравнение, vbDatabaseCompare - сравнение на база данни

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave