क्या आप VBScript के बिना एक्सेल में रेगुलर एक्सप्रेशन कर सकते हैं?


22

मैं एक एक्सेल फ़ंक्शन की तलाश कर रहा हूं, जिसे मैं किसी अन्य सेल की सामग्री की रेगेक्स खोज करने के लिए सेल में रख सकता हूं। क्या ऐसा करने के लिए कुछ उपलब्ध है? मैं इसके लिए स्प्रेडशीट में VB स्क्रिप्ट जोड़ना पसंद नहीं करूंगा क्योंकि मैं किसी समाधान को तेजी से हार्ड-कोड कर सकता हूं। यह सिर्फ इतना है कि सबसे तेज़ समाधान एक फ़ंक्शन होगा। मैं एक नहीं मिल सकता है, हालांकि। तो शायद कुछ भी नहीं है।

किसी को पता है?

जवाबों:


12

आप बस VBScript.dll regex फ़ंक्शन एक्सेल में प्रकट करने के लिए VBE में 'Microsoft VBScript रेगुलर एक्सप्रेशंस 5.5' के संदर्भ को जोड़ सकते हैं। एक साधारण रेगेक्स फ़ंक्शन लिखना तब तुच्छ होता है, उदा

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 पैकेज ने मेरे लिए बहुत अच्छा काम किया।


यह वास्तव में बहुत अच्छा काम करता है (मैं एक्सेल 2013 का उपयोग कर रहा हूं)
सेबेस्टियन

3

MoreFunc.xll एक मुफ्त एडिन है जिसमें रेगेक्स कार्यक्षमता है।

कुछ अन्य थर्ड पार्टी एडिंस हैं जो रेगेक्स भी कर सकते हैं।

इसे करने के लिए कोई सही मूल कार्यपत्रक फ़ंक्शन नहीं हैं, लेकिन यदि आपके पास करने के लिए एक विशिष्ट खोज है, तो आप शायद काम करने के लिए अन्य कार्यों का उपयोग कर सकते हैं।


पुष्टि के लिए धन्यवाद। मुझे वह पुस्तकालय मिल गया, लेकिन हम कुछ ऐसा करने की उम्मीद कर रहे थे, जिससे हमें पुस्तकालय वितरित करने की आवश्यकता न पड़े।
एरिक रॉबर्टसन

@ एरिक, हां, मुझे अपने स्प्रैडशीट में एडिंस जोड़ने से नफरत है, उनमें से एक को ट्रैक करने के लिए एक बड़ा दर्द है। जब तक आपको पूर्ण रेगेक्स लचीलेपन की आवश्यकता नहीं होती है, आप संभवतः अन्य कार्यों के साथ काम कर सकते हैं। एक्सेल में बहुत सारी ट्रिक्स हैं। यहां विशिष्ट अनुरोध पोस्ट करें।
लांस रॉबर्ट्स

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.