Можете ли вы сделать регулярные выражения в Excel без VBScript?


22

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

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

Ответы:


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

Можете ли вы объяснить, как вы добавляете ссылку?
Крис Уолш


3

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

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

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


Спасибо за подтверждение. Я нашел эту библиотеку, но мы надеялись, что у нас будет что-то, от чего мы тоже не будем распространять библиотеку.
Эрик Робертсон

@ Эрик, да, я ненавижу добавлять надстройки в свои таблицы, это большая боль, чтобы следить за ними. Если вам не нужна полная гибкость регулярных выражений, вы, вероятно, можете выполнить работу с другими функциями. В Excel много хитростей. Размещайте конкретные запросы здесь.
Ланс Робертс

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 и установите флажок для этой ссылки.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.