В языке Visual Basic существует один крайне полезный оператор, называемый Like. Он умеет проверять подобие (похожесть) двух текстовых строк. К сожалению, в стандартном наборе функций этот оператор не нашел своего места, но очень легко создать пользовательскую функцию, которая будет это делать.
Откройте меню Сервис - Макрос - Редактор Visual Basic, вставьте новый модуль (меню Insert - Module) и скопируйте туда текст этой функции:
Function MaskCompare(txt As String, mask As String, CaseSensitive As Boolean)
|
Закройте редактор Visual Basic и вернитесь в Excel.
Теперь в Мастере функций в категории Определенные пользователем можно найти нашу функцию MaskCompare и воспользоваться ей. Синтаксис функции следующий:
=MaskCompare(txt; mask; CaseSensitive)
где
txt - любой текст или ячейка с текстом, которую мы проверяем на соответствие маске
mask - набор символов, которые ищутся в проверяемом тексте. Набор может содержать спецсимволы подстановки:
· | * - любое количество любых символов |
· | ? - один любой символ |
· | # - любая цифра (0 - 9) |
· | [список_символов] - любой символ из списка |
· | [!список_символов] - все символы, кроме содержащихся в списке |
Case_Sensitive - необходимо ли учитывать регистр при проверке:
· | 1 - регистр символов учитывается |
· | 0 - регистр символов не учитывается |
Примеры использования функции
Использование спецсимволов в маске открывает перед пользователем широчайшие возможности. Вот несколько примеров масок:
· | ### - все числа от 0 до 999 |
· | ????? - все слова из 5 букв |
· | м*н - все слова, начинающиеся на "м" и заканчивающиеся на "н" |
· | *[аостр]* - все слова, содержащие хотя бы одну из букв а,о,с,т,р |
· | *[!abcdefghijklmnopqrstuvwxyz]* - все слова НЕ содержащие английских букв |