VBA ki madad se find aur search ka use kaise karein

सवाल पूछें
VBA में Find फंक्शन का सबसे ज्यादा इस्तेमाल होता है. इसकी मदद से यूजर्स किसी जानकारी को दिए गए दायरे में पहली जानकारी को खोज सकते हैं। आप इस विधि की मदद से शीट या Microsoft Excel स्प्रेडशीट में सर्च कर सकते हैं। इस ट्यूटोरियल में हम बताएंगे कि VBA में फाइंड फंक्शन का इस्तेमाल करते हुए एक्सेल कॉलम में कोई वैल्यू कैसे सर्च किया जा सकता है.


Find की मदद से डेटा सर्च करें

Find फंक्शन बिलकुल बेसिक सर्च फंक्शन की तरह काम करती है. यदि आप वर्कबुक में सभी डेटा को सामान्य तरीके से सर्च करना चाहते हैं तो आपको बस अपने कीबोर्ड पर [CTRL] + F बटन को दबाना होगा। इससे आपके सामने सर्च बॉक्स ओपन होगा। अब बस वहां आपको वैल्यू या कीवर्ड को डाल कर Enter को दबाना होगा.

एक्सेल आपके सर्च से मिलते जुलते सारे सेल को हाइलाइट करेगा.

VBA में Find की मदद से डेटा सर्च करना

आइए बताते हैं कि वीबीए में bold>Find</bold> फंक्शन कैसे काम करेगा। ध्यान रहे कि यहां हम Value को सर्च करेंगे:

Cells.Find(What:="Value", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, 
SearchFormat:=False).Activate

Find को समझें

आइए आपको फटाफट 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 हो सकता है. ये इस बात पर निर्भर करेगा कि फॉरमैट की वैल्यू (जैसे कि, मौद्रिक वैल्यू, नंबर, बॉर्डर, एलाइनमेंट आदि) दिए गए है कि नहीं.

VBA में Find विधि के उदाहरण

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
Jean-François Pillou

जीन फ़्रांसवा पिलाओ - संस्थापक, CCM
जीन फ़्रांसवा पिलाओ को हमारी टीम जेफ नाम से जानती है. उन्होंने फ्रांस की नंबर वन हाईटेक साइट CommentCaMarche.net की शुरुआत की. जेफ सीसीएम बेंचमार्क ग्रुप के मुख्य कार्यकारी अधिकारी होने के साथ फिगरो ग्रुप के डिजिटल डायरेक्टर भी हैं.

CCM टीम के बारे में और जानिए