22

Я ищу функцию Excel, которую я могу поместить в ячейку для регулярного поиска содержимого другой ячейки. Есть ли что-нибудь для этого? Я бы предпочел не добавлять VB Script в электронную таблицу для этого, потому что я могу быстрее зашифровать решение. Просто самое быстрое решение - это функция. Я не могу найти один, хотя. Так что, может быть, нет ничего.

Кто-нибудь знает?

4 ответа4

12

Вы можете просто добавить ссылку на «Регулярные выражения Microsoft VBScript 5.5» в VBE, чтобы представить функции регулярного выражения VBScript.dll в Excel. Написание простой функции регулярного выражения тогда тривиально, например,

Public Function emailCheck(rawEmail As String) As Boolean
    Dim reg As New RegExp
    reg.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,4}$"
    emailCheck = False
    If reg.Test(rawEmail) Then
        emailCheck = True
    End If
End Function
7

Пакет .xla на этом сайте работал очень хорошо для меня.

3

MoreFunc.xll - это бесплатный плагин с функциональностью Regex.

Есть некоторые другие сторонние дополнения, которые могут также выполнять регулярные выражения.

Для этого нет настоящих собственных функций рабочего листа, но если у вас есть определенный поиск, вы, вероятно, можете использовать другие функции для выполнения работы.

2

Вот функция, которая дает количество совпадений регулярного выражения в конкретной ячейке:

Public Function regexCount(regex As String, ref As Range) As Integer
    Dim reg As New RegExp
    reg.Global = True
    reg.Pattern = regex
    regexCount = reg.Execute(ref.Value).Count
End Function

(Требуется добавить ссылку на «Регулярные выражения Microsoft VBScript 5.5» - просто перейдите в «Инструменты» -> «Ссылки» из редактора VBA и установите флажок для этой ссылки.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .