Czy potrafisz wykonywać wyrażenia regularne w programie Excel bez VBScript?


22

Szukam funkcji programu Excel, którą można umieścić w komórce, aby przeprowadzić wyszukiwanie wyrażeń regularnych zawartości innej komórki. Czy jest coś do zrobienia? W tym celu wolałbym nie dodawać skryptu VB do arkusza kalkulacyjnego, ponieważ mogę szybciej zaprogramować rozwiązanie. Po prostu najszybszym rozwiązaniem będzie funkcja. Ale nie mogę znaleźć. Więc może nic nie ma.

Ktoś wie?

Odpowiedzi:


12

Możesz po prostu dodać odwołanie do „Wyrażeń regularnych Microsoft VBScript 5.5” w VBE, aby udostępnić funkcje wyrażeń regularnych VBScript.dll w programie Excel. Pisanie prostej funkcji wyrażenia regularnego jest wtedy trywialne, np

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

Czy możesz wyjaśnić, w jaki sposób dodajesz referencję?
Chris Walsh


3

MoreFunc.xll to darmowy dodatek z funkcją Regex.

Istnieje kilka dodatków innych firm, które mogą również wykonywać Regex.

Nie ma w tym celu żadnych prawdziwych natywnych funkcji arkusza, ale jeśli masz konkretne wyszukiwanie, możesz prawdopodobnie użyć innych funkcji, aby wykonać zadanie.


Dziękuję za potwierdzenie. Znalazłem tę bibliotekę, ale liczyliśmy na coś, co nie wymagałoby od nas również dystrybucji biblioteki.
Erick Robertson,

@ Eryk, tak, nienawidzę dodawania dodatków do moich arkuszy kalkulacyjnych, co jest wielkim problemem, aby je śledzić. O ile nie potrzebujesz pełnej elastyczności wyrażeń regularnych, prawdopodobnie możesz wykonać zadanie za pomocą innych funkcji. W Excelu jest wiele sztuczek. Opublikuj konkretne prośby tutaj.
Lance Roberts

2

Oto funkcja, która podaje liczbę dopasowań wyrażeń regularnych w określonej komórce:

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

(Wymaga dodania odwołania do „Microsoft VBScript Regular Expressions 5.5” - wystarczy przejść do „Narzędzia” -> „Referencje” z edytora VBA i zaznaczyć pole wyboru dla tej referencji).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.