VBA में Find फंक्शन का सबसे ज्यादा इस्तेमाल होता है. इसकी मदद से यूजर्स किसी जानकारी को दिए गए दायरे में पहली जानकारी को खोज सकते हैं। आप इस विधि की मदद से शीट या Microsoft Excel स्प्रेडशीट में सर्च कर सकते हैं।
इस ट्यूटोरियल में हम बताएंगे कि VBA में फाइंड फंक्शन का इस्तेमाल करते हुए एक्सेल कॉलम में कोई वैल्यू कैसे सर्च किया जा सकता है.
Find फंक्शन बिलकुल बेसिक सर्च फंक्शन की तरह काम करती है. यदि आप वर्कबुक में सभी डेटा को सामान्य तरीके से सर्च करना चाहते हैं तो आपको बस अपने कीबोर्ड पर [CTRL] + F बटन को दबाना होगा। इससे आपके सामने सर्च बॉक्स ओपन होगा। अब बस वहां आपको वैल्यू या कीवर्ड को डाल कर Enter को दबाना होगा.
एक्सेल आपके सर्च से मिलते जुलते सारे सेल को हाइलाइट करेगा.
आइए बताते हैं कि वीबीए में bold>Find</bold> फंक्शन कैसे काम करेगा। ध्यान रहे कि यहां हम Value को सर्च करेंगे:
Cells.Find(What:="Value", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
आइए आपको फटाफट Find विधि के सभी पैरामीटर के बारे में बताते हैं.
MyRange.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, SearchFormat)
MyRange: ये Range ऑब्जेक्ट के बारे में बताता है, मतलब कि किस सेल में आप What पारामीटर में मौजूद जानकारी को सर्च करना चाहते हैं.
आपकी फुल शीट ये हो सकती है... (Sheets(1).Cells.Find(...)), a column (Sheets(1).Columns(3).Find(...)), a row (Sheets(1).Rows(7).Find(....)), या सेल की रेंज... (Sheets(1).Range("D12:F56").Find(....)).
What: इस पैरामीटर की जरूरत पड़ती है। इस पैरामीटर से आप ये तय कर सकते हैं कि आप किस रेंज या दायरे में कौन सा वैल्यू खोज रहे हैं। ये किसी भी तरह का डाटा हो सकता है जिसे एक्सेल सपोर्ट करता हो.
After: ये पैरामीटर ऑप्शनल है. यानी आप चाहें तो इसका इस्तेमाल करें, चाहें तो ना करें. ये पैरामीटर सर्च के लिए शुरुआती सेल का संकेत देता है (ध्यान रहे कि सेल खास हो). यदि After के बारे में संकेत नहीं दिया गया है तो सर्च रेंज के सबसे ऊपर बाएं कोने से सर्च होगा.
LookIn: ये पैरामीटर भी आफ्टर की तरह ही ऑप्शनल है. इसका इस्तेमाल रेंज आ दायरे के भीतर वैल्यू का पता लगाने के लिए किया जाता है। LookIn के दूसरे वेरिएशन में xlValues, xlFormulas, और xlComments शामिल है.
LookAt: ये पैरामीटर भी ऑप्शनल है. LookAt बताता है कि दिया गया वैल्यू खोजे जा रहे वैल्यू के पूरी तरह समान हो सकता है या नहीं भी हो सकता है, या आंशिक रूप से बराबर हो सकता है.
इसे एक उदाहरण से समझिए. यदि आपको "10" को: 6210, 4105, 540, 163, 154, 132, 10 में सर्च करना है तो ऐसे कई तरीके हैं जिनका आप इस्तेमाल कर सकते हैं. अब आपको VBA को बताना है कि आप केवल 10 नंबर को सर्च करना चाहते हैं, तो आप LookAt:=XlWhole पैरामीटर का इस्तेमाल कर सकते हैं. इसके विपरीत यदि ये बताना है कि आप उस वैल्यू को सर्च करना चाहते हैं जिसमें 10 है (जैसे कि 6210 या 4105), तो आप LookAt:=XlPart का इस्तेमाल कर सकते हैं.
SearchOrder: ये भी एक आप्शनल पैरामीटर है. सर्च दो स्थिर वैल्यू की मदद से होगा: xlByRows (रो के लिए), या xlByColumns (कॉलम के लिए).
SearchDirection: ये भी पैरामीटर ऑप्शनल है. ये पैरामीटर किसी खास रेंज में सर्च की दिशा का संकेत देता है. दो स्थिर वैल्यू हैं, xlNext, जो रेंज में अगले डायरेक्शन को सर्च करने के लिए इस्तेमाल होता है, और xlPrevious, जो पहले बताए गए वैल्यू को सर्च करने के लिए उपयोग होता है.
MatchCase: ये पैरामीटर भी ऑप्शनल है. इस तर्क के दो वैल्यू हैं, True और False. केस-सेंसिटीव सर्च को True के रूप में सेट करना चाहिए.
SearchFormat: ये ऑप्शनल पैरामीटर है. यहां पैरामीटर True या False हो सकता है. ये इस बात पर निर्भर करेगा कि फॉरमैट की वैल्यू (जैसे कि, मौद्रिक वैल्यू, नंबर, बॉर्डर, एलाइनमेंट आदि) दिए गए है कि नहीं.
Option Explicit Sub Cherche() 'déclaration des variables : Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String, AdresseTrouvee As String '********* à adapter *********** 'affectation de valeurs aux variables : 'on cherche le mot "Trouve" Valeur_Cherchee = "Trouve" 'dans la première colonne de la feuille active Set PlageDeRecherche = ActiveSheet.Columns(1) '******************************* 'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole) Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) 'traitement de l'erreur possible : Si on ne trouve rien : If Trouve Is Nothing Then 'ici, traitement pour le cas où la valeur n'est pas trouvée AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address Else 'ici, traitement pour le cas où la valeur est trouvée AdresseTrouvee = Trouve.Address End If MsgBox AdresseTrouvee 'vidage des variables Set PlageDeRecherche = Nothing Set Trouve = Nothing End Sub
कोड:
Function FindAll(ByVal sText As String, ByRef oSht As Worksheet, ByRef sRange As String, ByRef arMatches() As String) As Boolean ' -------------------------------------------------------------------------------------------------------------- ' FindAll - To find all instances of the1 given string and return the row numbers. ' If there are not any matches the function will return false ' -------------------------------------------------------------------------------------------------------------- On Error GoTo Err_Trap Dim rFnd As Range ' Range Object Dim iArr As Integer ' Counter for Array Dim rFirstAddress ' Address of the First Find ' ----------------- ' Clear the Array ' ----------------- Erase arMatches Set rFnd = oSht.Range(sRange).Find(what:=sText, LookIn:=xlValues, lookAt:=xlPart) If Not rFnd Is Nothing Then rFirstAddress = rFnd.Address Do Until rFnd Is Nothing iArr = iArr + 1 ReDim Preserve arMatches(iArr) arMatches(iArr) = rFnd.Row 'rFnd.Address pour adresse complete ' rFnd.Row Pour N° de ligne Set rFnd = oSht.Range(sRange).FindNext(rFnd) If rFnd.Address = rFirstAddress Then Exit Do ' Do not allow wrapped search Loop FindAll = True Else ' ---------------------- ' No Value is Found ' ---------------------- FindAll = False End If ' ----------------------- ' Error Handling ' ----------------------- Err_Trap: If Err <> 0 Then MsgBox Err.Number & " " & Err.Description, vbInformation, "Find All" Err.Clear FindAll = False Exit Function End If End Function
Image: © Dzmitry Kliapitski - 123RF.com